code: def launch_coroutine(self, cor, *args, **kwargs):
          
  
          if self.stopping:
              raise LoopStoppingError("Could not launch coroutine because loop is shutting down: %s" % cor)
  
          # Ensure the loop exists and is started
          self.start()
  
          cor = _instaniate_coroutine(cor, args, kwargs)
  
          if self.inside_loop():
              return asyncio.ensure_future(cor, loop=self.loop)
  
          return asyncio.run_coroutine_threadsafe(cor, loop=self.loop)
docs: Start a coroutine task and return a blockable/awaitable object.
  
          If this method is called from inside the event loop, it will return an
          awaitable object.  If it is called from outside the event loop it will
          return an concurrent Future object that can block the calling thread
          until the operation is finished.
  
          Args:
              cor (coroutine): The coroutine that we wish to run in the
                  background and wait until it finishes.
  
          Returns:
              Future or asyncio.Task: A future representing the coroutine.
  
              If this method is called from within the background loop
              then an awaitable asyncio.Tasks is returned.  Otherwise,
              a concurrent Future object is returned that you can call
              ``result()`` on to block the calling thread.