outmost one when defining a function. For example, when combined
     with "@staticmethod" or "@classmethod",
     "@rpc.functions.async_execution" needs to be the inner decorator
     to allow the target function be recognized as a static or class
     function. This target function can still execute asynchronously
     because, when accessed, the static or class method preserves
     attributes installed by "@rpc.functions.async_execution".
Example::
      The returned "Future" object can come from "rpc_async()",
      "then()", or "Future" constructor. The example below shows
      directly using the "Future" returned by "then()".
  >>> from torch.distributed import rpc
  >>>
  >>> # omitting setup and shutdown RPC
  >>>
  >>> # On all workers
  >>> @rpc.functions.async_execution
  >>> def async_add_chained(to, x, y, z):
  >>>     # This function runs on "worker1" and returns immediately when
