code: def asynchronous(self, fun, low, user='UNKNOWN', pub=None):
          '''
          Execute the function in a multiprocess and return the event tag to use
          to watch for the return
          '''
          async_pub = pub if pub is not None else self._gen_async_pub()
  
          proc = salt.utils.process.SignalHandlingMultiprocessingProcess(
                  target=self._proc_function,
                  args=(fun, low, user, async_pub['tag'], async_pub['jid']))
          with salt.utils.process.default_signals(signal.SIGINT, signal.SIGTERM):
              # Reset current signals before starting the process in
              # order not to inherit the current signal handlers
              proc.start()
          proc.join()  # MUST join, otherwise we leave zombies all over
          return async_puf asynchronous(self, fun, low, user='UNKNOWN', pub=None):
          '''
          Execute the function in a multiprocess and return the event tag to use
          to watch for the return
          '''
          async_pub = pub if pub is not None else self._gen_async_pub()
  
          proc = salt.utils.process.SignalHandlingMultiprocessingProcess(
                  target=self._proc_function,
                  args=(fun, low, user, async_pub['tag'], async_pub['jid']))
          with salt.utils.process.default_signals(signal.SIGINT, signal.SIGTERM):
              # Reset current signals before starting the process in
              # order not to inherit the current signal handlers
              proc.start()
          proc.join()  # MUST join, otherwise we leave zombies all over
          return async_pub
docs: Execute the function in a multiprocess and return the event tag to use
          to watch for the return