code: private boolean checkBodyValidity() throws IOException {
          // LI4335 - allow response body reading if early reads are in place
          if (isImmediateReadEnabled() || this.bEarlyReads) {
              if (!headersParsed()) {
                  // this means they are requesting body buffers prior to sending
                  // the minimum request headers
                  IOException ioe = new IOException("Request headers not sent yet");
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "Attempt to read response prior to sendRequest");
                  }
                  throw ioe;
              }
              // otherwise continue as normal
          } else if (!isMessageSent()) {
              // request message must be fully sent prior to reading any part of
              // the response body
              IOException ioe = new IOException("Request not finished yet");
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Attempt to read response prior to finishRequest");
              }
              throw ioe;
          }
  
          // check to see if we should be reading for data
          return isIncomingBodyValid();
      }
docs: Utility method to check whether the upcoming read for the response body
  is either valid at this point or even necessary.
  
  @return boolean -- false means there is no need to read for a body
  @throws IOException
  -- if this not a valid time to get the body