async def METHOD_NAME(self):
    while not self.event_stream_stop_event.is_set():
        if self.refresh == 0:
            # to avoid spinning, wait until an interval is set
            signal = await self.refresh_loop_signal.get()
            if signal is None:
                # exit signal received from disconnect()
                return
            continue
        interval = self.refresh * 60  # interval in seconds from refresh in minutes
        signal_task = asyncio.create_task(self.refresh_loop_signal.get())
        # wait until either we receive a signal or the refresh interval expires
        done, pending = await asyncio.wait([signal_task, asyncio.sleep(interval)], return_when=asyncio.FIRST_COMPLETED)
        for task in pending:
            task.cancel()
        done_task = done.pop()
        if done_task is signal_task and done_task.result() is None:
            # exit signal received from disconnect()
            return
        logger.info("Refreshing event stream")
        await self.restart()