async def METHOD_NAME(task_data: _TaskData) -> None:
    with log_context(logger, logging.INFO, msg=f"'{task_data.name}'"):
        while True:
            try:
                await task_data.run()
            except Exception:  # pylint: disable=broad-except
                logger.exception("Had an error while running '%s'", task_data.name)
            if task_data.repeat_interval_s is None:
                logger.warning(
                    "Unexpected termination of '%s'; it will be restarted",
                    task_data.name,
                )
            logger.info(
                "Will run '%s' again in %s seconds",
                task_data.name,
                task_data.repeat_interval_s,
            )
            await asyncio.sleep(
                DEFAULT_TASK_WAIT_ON_ERROR
                if task_data.repeat_interval_s is None
                else task_data.repeat_interval_s
            )