public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{
int read = 0;
if (_storedOffset >= _storedLength)
{
return base.ReadAsync(buffer, offset, count, cancellationToken);
}
read = Math.Min(count, _storedLength - _storedOffset);
Buffer.BlockCopy(_storedBuffer, _storedOffset, buffer, offset, read);
_storedOffset += read;
if (read == count || !_readMore)
{
return Task.FromResult<int>(read);
}
offset += read;
count -= read;
return ReadMoreAsync(read, buffer, offset, count, cancellationToken);
}