public FrameReader(Stream innerStream, int length)
{
int bufferSize = Math.Min(4*1024, length);
_buffer = MemoryPool.Instance.Take(bufferSize);
_remainingInBuffer = 0;
_position = 0;
_disposed = false;
_innerStream = innerStream;
_unreadFromStream = length;
_waitUntilAllFrameDataRead = new TaskCompletionSource<bool>();
if(length == 0)
_waitUntilAllFrameDataRead.SetResult(true);
}