public async ValueTask ReceiveAsync(PooledMemoryStream readBuffer, int bytesToReceive, CancellationToken cancellation) { var left = bytesToReceive; while (left != 0) { if (cancellation.IsCancellationRequested) { throw new TaskCanceledException(); } left -= await readBuffer.WriteAsync(_mainStream, bytesToReceive, cancellation).ConfigureAwait(false); } }