docs: async def _start_plugins(self) -> None:
          """
          Start the plugins by priority
  
          Start the plugins based on the priority and wait for them to be fully
          started before starting the next one. This ensure plugins can use
          a previously started one during startup.
          """
          logger.debug('Starting plugins')
          for priority in sorted(self._start_priority, reverse=True):
              logger.debug(
                  'Starting plugins %s',
                  ', '.join(self._start_priority[priority])
              )
  
              for name in self._start_priority[priority]:
                  plugin = self._plugins[name]
                  self._tasks[name] = self._loop.create_task(
                      plugin['plugin'].start()
                  )
  
              while not all(self._plugins[name]['plugin'].started
                            for name in self._tasks):
  
                  for task in self._tasks.values():
                      if task.done():
                          task.result()
                  await asyncio.sleep(0.2, loop=self._loop)
  
              else:
                  logger.debug('Plugins %s started',
                               ', '.join(self._start_priority[priority]))