async def METHOD_NAME(self, timeout=None):
    if timeout is None:
        context = NullContext(None)
    else:
        context = trio.move_on_after(timeout)
    with context:
        await self.wait_for(2)
        (size,) = struct.unpack("!H", self._buffer.get(2))
        await self.wait_for(size)
        return self._buffer.get(size)
    raise dns.exception.Timeout