code: @Override
      public int read(byte[] output) 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(byte[])");
          }
          if(output == null){
              if (TraceComponent.isAnyTracingEnabled() && tc.isErrorEnabled())
                  Tr.error(tc, "read.write.bytearray.null");
              throw new NullPointerException(Tr.formatMessage(tc, "read.write.bytearray.null"));
          }
          
          int returnSize = 0;
          
          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();
                  returnSize = super.read(output);
              }
          }else{
              returnSize = super.read(output);
          }
          
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "read" , "SRTInputStream31.read(byte[]) : " + returnSize);
          }
          
          return returnSize;
      }
docs: /* (non-Javadoc)
  @see com.ibm.ws.webcontainer.srt.SRTInputStream#read(byte[])