code: protected void processRequest() {
          final int timeout = getHTTPContext().getReadTimeout();
          final TCPReadCompletedCallback callback = HttpICLReadCallback.getRef();
  
          // keep looping on processing information until we fully parse the message
          // and hand it off, or until the reads for more data go async
          VirtualConnection rc = null;
          do {
              if (handleNewInformation()) {
                  // new information triggered an error message, so we're done
                  return;
              }
              // Note: handleNewInformation will allocate the read buffers
              if (!isPartiallyParsed()) {
                  // we're done parsing at this point. Note: cannot take any action
                  // with information after this call because it may go all the way
                  // from the channel above us back to the persist read, must exit
                  // this callstack immediately
                  handleNewRequest();
                  return;
              }
              rc = this.myTSC.getReadInterface().read(1, callback, false, timeout);
          } while (null != rc);
      }
docs: Process new information for an inbound request that needs to be parsed
  and handled by channels above.