<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def messages(self):
 """Iterate through RMB posts from newest to oldest. Returns ------- an asynchronous generator that yields :class:`Post` """

        # Messages may be posted on the RMB while the generator is running.
        oldest_id_seen = float('inf')
        for offset in count(step=100):
            posts_bunch = await self._get_messages(offset=offset)
            for post in reversed(posts_bunch):
                if post.id < oldest_id_seen:
                    yield post
            oldest_id_seen = posts_bunch[0].id
            if len(posts_bunch) < 100:
                break