def METHOD_NAME(
    self, method: str, paginated_key: str, **kwargs
) -> Tuple[dict, Optional[str], bool]:
    """
    This method does paginated api calls and handle slack rate limit errors in order to return collected data
    and have the ability to continue doing paginated requests from the last successful cursor.
    Return last successful cursor instead of next cursor to avoid data loss during delay time.
    `paginated_key` represents a key from the response which is paginated. For example "users" or "channels"
    """
    api_method = getattr(self, method)
    cumulative_response = {}
    cursor = kwargs["cursor"]
    rate_limited = False
    try:
        response = api_method(**kwargs).data
        cumulative_response = response
        cursor = response["response_metadata"]["next_cursor"]
        while (
            "response_metadata" in response
            and "next_cursor" in response["response_metadata"]
            and response["response_metadata"]["next_cursor"] != ""
        ):
            next_cursor = response["response_metadata"]["next_cursor"]
            kwargs["cursor"] = next_cursor
            response = api_method(**kwargs).data
            cumulative_response[paginated_key] += response[paginated_key]
            cursor = next_cursor
    except SlackAPIRatelimitError:
        rate_limited = True
    return cumulative_response, cursor, rate_limited