docs: def _GetChunkForReading(self, chunk):
      """Returns the relevant chunk from the datastore and reads ahead."""
      try:
        return self.chunk_cache.Get(chunk)
      except KeyError:
        pass
  
      # We don't have this chunk already cached. The most common read
      # access pattern is contiguous reading so since we have to go to
      # the data store already, we read ahead to reduce round trips.
  
      missing_chunks = []
      for chunk_number in range(chunk, chunk + 10):
        if chunk_number not in self.chunk_cache:
          missing_chunks.append(chunk_number)
  
      self._ReadChunks(missing_chunks)
      # This should work now - otherwise we just give up.
      try:
        return self.chunk_cache.Get(chunk)
      except KeyError:
        raise aff4.ChunkNotFoundError("Cannot open chunk %s" % chunk)