before this change, we would have had to replicate payload length checks in each block.

Also the call to `FrameReader.Handler.data(boolean, int, InputStream, int)` or Hpack huffman decoding could overrun the buffer accidentally unless we guard each read().