internal async Task <Http2FrameWithPayload> ReceiveFrameAsync(uint maxFrameSize = Http2PeerSettings.DefaultMaxFrameSize)
        {
            var frame = new Http2FrameWithPayload();

            while (true)
            {
                var result = await _pair.Application.Input.ReadAsync().AsTask().DefaultTimeout();

                var buffer   = result.Buffer;
                var consumed = buffer.Start;
                var examined = buffer.Start;

                try
                {
                    Assert.True(buffer.Length > 0);

                    if (Http2FrameReader.TryReadFrame(ref buffer, frame, maxFrameSize, out var framePayload))
                    {
                        consumed      = examined = framePayload.End;
                        frame.Payload = framePayload.ToArray();
                        return(frame);
                    }
                    else
                    {
                        examined = buffer.End;
                    }

                    if (result.IsCompleted)
                    {
                        throw new IOException("The reader completed without returning a frame.");
                    }
                }
 internal Dictionary <string, string> DecodeHeaders(Http2FrameWithPayload frame, bool endHeaders = false)
 {
     Assert.Equal(Http2FrameType.HEADERS, frame.Type);
     _hpackDecoder.Decode(frame.PayloadSequence, endHeaders, handler: this);
     return(_decodedHeaders);
 }