async def METHOD_NAME(self):
    # In case self._reader only has partial content(without header).
    # seek(0, 0) to make sure read the (partial)content from beginning.
    await self._reader.seek(0, 0)
    # read the header: magic, meta, sync
    await self._read_header()
    # ensure codec is valid
    avro_codec_raw = self.get_meta('avro.codec')
    if avro_codec_raw is None:
        self.codec = "null"
    else:
        self.codec = avro_codec_raw.decode('utf-8')
    if self.codec not in VALID_CODECS:
        raise DataFileException('Unknown codec: %s.' % self.codec)
    # get ready to read
    self._block_count = 0
    # object_position is to support reading from current position in the future read,
    # no need to downloading from the beginning of avro.
    if hasattr(self._reader, 'object_position'):
        self.reader.track_object_position()
    # header_reader indicates reader only has partial content. The reader doesn't have block header,
    # so we read use the block count stored last time.
    # Also ChangeFeed only has codec==null, so use _raw_decoder is good.
    if self._header_reader is not None:
        self._datum_decoder = self._raw_decoder
    self.datum_reader.writer_schema = (
        schema.parse(self.get_meta(SCHEMA_KEY).decode('utf-8')))
    return self