code: def join(self, timeout_s=None):
      
      if not self.thread:
        return False
      self.thread.join(timeout_s)
      return self.running
docs: Joins blocking until the interval ends or until timeout is reached.
  
      Args:
        timeout_s: The time in seconds to wait, defaults to forever.
      Returns:
        True if the interval is still running and we reached the timeout.