code: private boolean readHeader(ReadStream is,
                               int length,
                               int flags,
                               int streamId)
      throws IOException
    {
      if (! onPeerOpen()) {
        log.warning("peer-open failed " + this);
        // stream open request after goaway
        return false;
      }
      
      if (streamId <= 0) {
        throw new IllegalStateException("Invalid stream: " + streamId);
      }
      
      
      ChannelHttp2 channel = _conn.getChannel(streamId);
      
      InRequest request;
      
      if (channel != null) {
        request = channel.getRequest();
      }
      else {
        request = _inHandler.newInRequest();
      }
      
      // _conn, streamId);
      if (! _inHeader.readHeaders(request, length, flags)) {
        return false;
      }
      
      if (channel == null) {
        channel = request.channel(); // new InChannelHttp2(_conn, streamId, request);
        // stream.addReceiveCredit(_settings.getInitialWindowSize());
      
        channel.init(_conn, streamId);
      }
      
      channel.onHeader(streamId);
      
      channel.getInChannel().addReceiveCredit(_settings.initialWindowSize());
      
      request.dispatch();
      
      boolean isEndStream = (flags & Http2Constants.END_STREAM) != 0;
      
      if (isEndStream) {
        channel.closeRead();
        
        if (onCloseStream() <= 0) {
          _inHandler.onGoAway();
        }
      }
      
      return true;
    }
docs: header (op=1)