private async Task ReceiveAsync(INetworkStream networkStream, StreamBufferReader2 streamBufferReader, byte[] buffer) { int bytesReceived = 0; do { try { bytesReceived = await ReadAsync(networkStream, buffer).ConfigureAwait(false); } catch (Exception exception) { if (!Disconnecting) { throw new TcpIpInnerReceiveFailedException(exception); } } if (bytesReceived > 0) { OnDataReceived(buffer, bytesReceived); streamBufferReader.GetStrings(buffer, bytesReceived); } } while (!Disconnecting && bytesReceived > 0); }