def METHOD_NAME(
    self, *, limit: int | None = None, after: Snowflake | None = None
) -> ReactionIterator:
    """Returns an :class:`AsyncIterator` representing the users that have reacted to the message.
    The ``after`` parameter must represent a member
    and meet the :class:`abc.Snowflake` abc.
    Parameters
    ----------
    limit: Optional[:class:`int`]
        The maximum number of results to return.
        If not provided, returns all the users who
        reacted to the message.
    after: Optional[:class:`abc.Snowflake`]
        For pagination, reactions are sorted by member.
    Yields
    ------
    Union[:class:`User`, :class:`Member`]
        The member (if retrievable) or the user that has reacted
        to this message. The case where it can be a :class:`Member` is
        in a guild message context. Sometimes it can be a :class:`User`
        if the member has left the guild.
    Raises
    ------
    HTTPException
        Getting the users for the reaction failed.
    Examples
    --------
    Usage ::
        # I do not actually recommend doing this.
        async for user in reaction.users():
            await channel.send(f'{user} has reacted with {reaction.emoji}!')
    Flattening into a list: ::
        users = await reaction.users().flatten()
        # users is now a list of User...
        winner = random.choice(users)
        await channel.send(f'{winner} has won the raffle.')
    """
    if not isinstance(self.emoji, str):
        emoji = f"{self.emoji.name}:{self.emoji.id}"
    else:
        emoji = self.emoji
    if limit is None:
        limit = self.count
    return ReactionIterator(self.message, emoji, limit, after)