code: def runner_async(self, fun, **kwargs):
          '''
          Run `runner modules <all-salt.runners>` asynchronously
  
          Wraps :py:meth:`salt.runner.RunnerClient.cmd_async`.
  
          Note that runner functions must be called using keyword arguments.
          Positional arguments are not supported.
  
          :return: event data and a job ID for the executed function.
          '''
          kwargs['fun'] = fun
          runner = salt.runner.RunnerClient(self.opts)
          return runner.cmd_async(kwargsf runner_async(self, fun, **kwargs):
          '''
          Run `runner modules <all-salt.runners>` asynchronously
  
          Wraps :py:meth:`salt.runner.RunnerClient.cmd_async`.
  
          Note that runner functions must be called using keyword arguments.
          Positional arguments are not supported.
  
          :return: event data and a job ID for the executed function.
          '''
          kwargs['fun'] = fun
          runner = salt.runner.RunnerClient(self.opts)
          return runner.cmd_async(kwargs)
docs: Run `runner modules <all-salt.runners>` asynchronously
  
          Wraps :py:meth:`salt.runner.RunnerClient.cmd_async`.
  
          Note that runner functions must be called using keyword arguments.
          Positional arguments are not supported.
  
          :return: event data and a job ID for the executed function.