async def METHOD_NAME(
    self,
) -> AsyncIterator[Sequence[MessageProcessingResult]]:
    while True:
        with self.session_factory() as session:
            pending_message = get_next_pending_message(
                current_time=utc_now(), session=session, fetched=True
            )
            if not pending_message:
                break
            try:
                result: MessageProcessingResult = (
                    await self.message_handler.process(
                        session=session, pending_message=pending_message
                    )
                )
                session.commit()
            except Exception as e:
                session.rollback()
                result = await self.handle_processing_error(
                    session=session,
                    pending_message=pending_message,
                    exception=e,
                )
                session.commit()
            yield [result]