async def METHOD_NAME(self, timeout, max_retries):
    while True:
        try:
            await self.connect_once(timeout, max_retries)
            if self._client and self._client.is_connected:
                # loop is started again on disconnect
                self.connected.set()
                return
        except asyncio.CancelledError:
            return
        except Exception:
            self.logger.exception("Failed to connect")
        # wait 10s before next retry
        await asyncio.sleep(10)