code: private void readChunk() throws IOException {
      if (mDataReader == null) {
        mDataReader = mDataReaderFactory.create(mPos, mLength - mPos);
      }
  
      if (mCurrentChunk != null && mCurrentChunk.readableBytes() == 0) {
        mCurrentChunk.release();
        mCurrentChunk = null;
      }
      if (mCurrentChunk == null) {
        mCurrentChunk = mDataReader.readChunk();
      }
    }
docs: Reads a new chunk from the channel if all of the current chunk is read.