code: @Override
      public int read() throws IOException {
          
          //Return -1 here because if we are closed or finished, we're at the end of the stream
          if(isClosed || isFinished()){
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "Nothing to read, stream is closed : " + isClosed + ", or finished : " + isFinished());
              return -1;
          }
          
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "read" , "SRTInputStream31.read()");
          }
          
          int returnByte;
          
          if(this.request.isAsyncStarted()&& (this.getReadListener()!= null)){
              synchronized(this){
  //                Check if isReady had returned false. If it did then an IllegalArgumentException will be thrown if a listener is set
                  isReadyFalseCheck();
                  returnByte = super.read();
              }
          } else{
              returnByte = super.read();
          }
          
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "read" , "SRTInputStream31.read() : " + returnByte);
          }
          
          return returnByte;
      }
docs: /* (non-Javadoc)
  @see com.ibm.ws.webcontainer.srt.SRTInputStream#read()