private async Task <Message> ReceiveMessageAsync(CancellationToken ct) { Message message; try { message = await _transport.ReceiveAsync(ct); } catch (MessageTransportException ex) when(ct.IsCancellationRequested) { // Network errors during cancellation are expected, but should not be exposed to clients. throw new OperationCanceledException(new OperationCanceledException().Message, ex); } if (message != null) { _log.Response(message.ToString(), _rLoopDepth); } return(message); }