code: @Override
      public boolean registerReadAhead(InterChannelCallback cb, int timeout) {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "Read-ahead requested (timeout=" + timeout + ") " + getVC());
          }
          if (-1 > timeout) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Invalid timeout used by caller.");
              }
              return false;
          }
          int state;
          int myState;
          // grab the read-ahead states in a sync block to avoid timing windows
          // with the callback kicking in at the same time
          synchronized (this.stateSyncObject) {
              state = getCallbackState();
              myState = getReadState();
              setCallbackState(CALLBACK_STATE_PENDING, null);
          }
          if (CALLBACK_STATE_IDLE != state) {
              // invalid state to start this read-ahead from
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Callback state is invalid: " + state);
              }
              return false;
          }
          if (READ_STATE_IDLE != myState) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Read for response state is invalid: " + myState);
              }
              return false;
          }
  
          // start the read now
          this.bReadAheadEnabled = true;
          int time = (-1 == timeout) ? getReadTimeout() : timeout;
          setAppReadCallback(cb);
          setupJITRead(getHttpConfig().getIncomingHdrBufferSize());
          getTSC().getReadInterface().read(1, HttpOSCReadAhead.getRef(), true, time);
          return true;
      }
docs: /*
  @see com.ibm.wsspi.http.channel.outbound.HttpOutboundServiceContext#
  registerReadAhead(com.ibm.wsspi.channelfw.InterChannelCallback, int)