code: def stop(self, timeout_s=None):
      
      self._stopping.set()
      with self._current_phase_thread_lock:
        phase_thread = self._current_phase_thread
        if not phase_thread:
          return
  
      if phase_thread.is_alive():
        phase_thread.kill()
  
        _LOG.debug('Waiting for cancelled phase to exit: %s', phase_thread)
        timeout = timeouts.PolledTimeout.from_seconds(timeout_s)
        while phase_thread.is_alive() and not timeout.has_expired():
          time.sleep(0.1)
        _LOG.debug('Cancelled phase %s exit',
                   "didn't" if phase_thread.is_alive() else 'did')
      # Clear the currently running phase, whether it finished or timed out.
      self.test_state.stop_running_phase()
docs: Stops execution of the current phase, if any.
  
      It will raise a ThreadTerminationError, which will cause the test to stop
      executing and terminate with an ERROR state.
  
      Args:
        timeout_s: int or None, timeout in seconds to wait for the phase to stop.