docs: def proxy_minion_process(queue):
      '''
      Start a proxy minion process
      '''
      import salt.cli.daemons
      import salt.utils.platform
      # salt_minion spawns this function in a new process
  
      lock = threading.RLock()
  
      def suicide_when_without_parent(parent_pid):
          '''
          Have the minion suicide if the parent process is gone
  
          NOTE: there is a small race issue where the parent PID could be replace
          with another process with the same PID!
          '''
          while lock.acquire(blocking=False):
              lock.release()
              time.sleep(5)
              try:
                  # check pid alive (Unix only trick!)
                  os.kill(parent_pid, 0)
              except OSError:
                  # forcibly exit, regular sys.exit raises an exception-- which
                  # isn't sufficient in a thread
                  os._exit(999)
  
      try:
          if not salt.utils.platform.is_windows():
              thread = threading.Thread(target=suicide_when_without_parent, args=(os.getppid(),))
              thread.start()
  
          restart = False
          proxyminion = None
          status = salt.defaults.exitcodes.EX_OK
          proxyminion = salt.cli.daemons.ProxyMinion()
          proxyminion.start()
      except (Exception, SaltClientError, SaltReqTimeoutError, SaltSystemExit) as exc:
          log.error('Proxy Minion failed to start: ', exc_info=True)
          restart = True
          # status is superfluous since the process will be restarted
          status = salt.defaults.exitcodes.SALT_KEEPALIVE
      except SystemExit as exc:
          restart = False
          status = exc.code
      finally:
          lock.acquire(blocking=True)
  
      if restart is True:
          log.warning('** Restarting proxy minion **')
          delay = 60
          if proxyminion is not None:
              if hasattr(proxyminion, 'config'):
                  delay = proxyminion.config.get('random_reauth_delay', 60)
          random_delay = randint(1, delay)
          log.info('Sleeping random_reauth_delay of %s seconds', random_delay)
          # preform delay after minion resources have been cleaned
          queue.put(random_delay)
      else:
          queue.put(0)
      sys.exit(status)