code: def asynchronous(func):
      
      @wraps(func)
      def wrapper(*args, **kwargs):
          eventloop = get_event_loop()
          result = func(*args, **kwargs)
          if not eventloop.is_running():
              while isawaitable(result):
                  result = eventloop.run_until_complete(result)
          return result
  
      return wrapper
docs: Return `func` in a "smart" asynchronous-aware wrapper.
  
      If `func` is called within the event-loop — i.e. when it is running — this
      returns the result of `func` without alteration. However, when called from
      outside of the event-loop, and the result is awaitable, the result will be
      passed though the current event-loop's `run_until_complete` method.
  
      In other words, this automatically blocks when calling an asynchronous
      function from outside of the event-loop, and so makes interactive use of
      these APIs far more intuitive.