async def METHOD_NAME(self) -> None:
    try:
        if not await self._connected():
            return
        assert self.slot is not None
        with self.slot:
            while not self._should_stop():
                try:
                    start = time.time()
                    if self.active:
                        await self._invoke_callback()
                    dt = time.time() - start
                    await asyncio.sleep(self.interval - dt)
                except asyncio.CancelledError:
                    break
                except Exception as e:
                    globals.handle_exception(e)
                    await asyncio.sleep(self.interval)
    finally:
        self._cleanup()