code: @Override
      @DoesServiceRequest
      public int read() throws IOException {
          final byte[] tBuff = new byte[1];
          final int numberOfBytesRead = this.read(tBuff, 0, 1);
  
          if (numberOfBytesRead > 0) {
              return tBuff[0] & 0xFF;
          }
          else if (numberOfBytesRead == 0) {
              throw new IOException(SR.UNEXPECTED_STREAM_READ_ERROR);
          }
          else {
              return -1;
          }
      }
docs: Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If
  no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks
  until input data is available, the end of the stream is detected, or an exception is thrown.
  
  @return An <code>int</code> which represents the total number of bytes read into the buffer, or -1 if
  there is no more data because the end of the stream has been reached.
  
  @throws IOException
  If an I/O error occurs.