


class AsyncExecutionClass:
      >>>
      >>>     @staticmethod
      >>>     @rpc.functions.async_execution
      >>>     def static_async_add(to, x, y, z):
      >>>         return rpc.rpc_async(to, torch.add, args=(x, y)).then(
      >>>             lambda fut: fut.wait() + z
      >>>         )
      >>>
      >>>     @classmethod
      >>>     @rpc.functions.async_execution
      >>>     def class_async_add(cls, to, x, y, z):
      >>>         ret_fut = torch.futures.Future()
      >>>         rpc.rpc_async(to, torch.add, args=(x, y)).then(
      >>>             lambda fut: ret_fut.set_result(fut.wait() + z)
      >>>         )
      >>>         return ret_fut
      >>>
      >>>     @rpc.functions.async_execution
      >>>     def bound_async_add(self, to, x, y, z):
      >>>         return rpc.rpc_async(to, torch.add, args=(x, y)).then(
      >>>             lambda fut: fut.wait() + z
      >>>         )
      >>>
      >>> # On worker0
      >>> ret = rpc.rpc_sync(
      >>>     "worker1",


