code: async def run_async(self):
          
          try:
              await self.run_loop_async()
          except Exception as err:  # pylint: disable=broad-except
              _logger.error("Run loop failed %r", err)
  
          try:
              _logger.info("Shutting down all pumps %r", self.host.guid)
              await self.remove_all_pumps_async("Shutdown")
          except Exception as err:  # pylint: disable=broad-except
              raise Exception("Failed to remove all pumps {!r}".format(err))
docs: Starts the run loop and manages exceptions and cleanup.