code: private int _readStream2Buffer() throws IOException {
          int bytesRead = 0;
          while (currentBufferPosition < chunkSize && bytesRead >= 0) {
              bytesRead = inputStream.read(buffer, currentBufferPosition, (int) chunkSize - currentBufferPosition);
              if (bytesRead > 0) {
                  currentBufferPosition += bytesRead;
              } else if (bytesRead == 0) {
                  throw new RuntimeException("i'm doing something wrong");
              }
          }
          return bytesRead;
      }
docs: Reads a buffer full from the {@link java.io.InputStream}.
  
  @return Number of bytes read from stream.
  @throws IOException if the reading from the stream fails.