Как отловить ошибку вызванную в System.dll и mscorlib.dll

Столкнулся с интересной ситуацией. Есть wss, где я в while постоянно читаю данные. Все работает, данные принимаются, однако после рандомного количества времени (минимум сколько проработало было 3 часа, а максимум 155 часов), вылетают следующие ошибки:

Вызвано исключение: "System.Net.WebSockets.WebSocketException" в System.dll
Вызвано исключение: "System.Net.WebSockets.WebSocketException" в mscorlib.dll
Вызвано исключение: "System.ObjectDisposedException" в System.dll
Вызвано исключение: "System.ObjectDisposedException" в System.dll
Вызвано исключение: "System.Net.WebSockets.WebSocketException" в System.dll
Вызвано исключение: "System.Net.WebSockets.WebSocketException" в mscorlib.dll
Вызвано исключение: "System.Net.WebSockets.WebSocketException" в mscorlib.dll

Пробовал отловить их через try catch, думал что они рождаются тут

rcvResult = await client.ReceiveAsync(rcvBuffer, token);

однако ошибки там не отлавливаются.

Может кто-нибудь сталкивался с данными ошибками, ну и соответственно знает что делать или куда копать в данном случае?

    private static async Task GetData()
    {
    System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
    CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
    CancellationToken token = cancelTokenSource.Token;
    ClientWebSocket client_ws = new ClientWebSocket();
    await client_ws.ConnectAsync(new Uri(webSocketUri_market), token);
    //подписываюсь на событие
    await client_ws.SendAsync(new ArraySegment<byte>(Encoding.UTF8.GetBytes("{\"id\": " + r + ",\"method\":\"subscribe\",\"params\":{\"channels\": [\"book.ETC_USDT.10\"]},\"nonce\":" + GetTimestamp() + "}")), WebSocketMessageType.Text, true, token);
    try
    {
    await Receiving(client_ws, token);
    }
    catch(WebException e)
    {
    Debug.WriteLine("Ошибка! Receiving! " + e.Message);
    }
    }
    
    private static async Task Receiving(ClientWebSocket client, CancellationToken token)
    {
    var rcvBytes = new byte[8192];
    var rcvBuffer = new ArraySegment<byte>(rcvBytes);
    string rcvMsg = "";
    WebSocketReceiveResult rcvResult;
    while (client.State.ToString() == "Open")
    {
    rcvResult = await client.ReceiveAsync(rcvBuffer, token);
    byte[] msgBytes = rcvBuffer.Skip(rcvBuffer.Offset).Take(rcvResult.Count).ToArray();
    rcvMsg = Encoding.UTF8.GetString(msgBytes);
    {ряд действий с полученными данными}
    }
}

Ответы (0 шт):