code: def background_thread(timeout_fn, timeout_event, handle_exit_code, is_alive,
          quit):
      
  
      # if there's a timeout event, loop 
      if timeout_event:
          while not quit.is_set():
              timed_out = event_wait(timeout_event, 0.1)
              if timed_out:
                  timeout_fn()
                  break
  
      # handle_exit_code will be a function ONLY if our command was NOT waited on
      # as part of its spawning.  in other words, it's probably a background
      # command
      #
      # this reports the exit code exception in our thread.  it's purely for the
      # user's awareness, and cannot be caught or used in any way, so it's ok to
      # suppress this during the tests
      if handle_exit_code and not RUNNING_TESTS: # pragma: no cover
          alive = True
          while alive:
              quit.wait(1)
              alive, exit_code = is_alive()
  
          handle_exit_code(exit_code)
docs: handles the timeout logic