public async Task ReceiveAsync(CancellationToken cancellationToken) { while (!_connection.Closed && !cancellationToken.IsCancellationRequested) { await _connection.ReceiveAsync(_writer, cancellationToken); await WriteMessageDelimiterAsync(cancellationToken); } await _writer.CompleteAsync(); }
public async Task ReceiveAsync(CancellationToken cancellationToken) { try { while (!_connection.Closed && !cancellationToken.IsCancellationRequested) { await _connection.ReceiveAsync(_writer, cancellationToken); await WriteMessageDelimiterAsync(cancellationToken); } } catch (OperationCanceledException) when(cancellationToken.IsCancellationRequested) { } finally { // writer should be always completed await _writer.CompleteAsync(); } }