internal ResponseStream(Action onFirstWrite)
{
if (onFirstWrite == null)
{
throw new ArgumentNullException(nameof(onFirstWrite));
}
_onFirstWrite = onFirstWrite;
_firstWrite = true;
_readLock = new SemaphoreSlim(1, 1);
_writeLock = new SemaphoreSlim(1, 1);
_bufferedData = new ConcurrentQueue<byte[]>();
_readWaitingForData = new TaskCompletionSource<object>();
}