<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def execute_phase(self, phase):
 """Executes a phase or skips it, yielding PhaseExecutionOutcome instances. Args: phase: Phase to execute. Returns: The final PhaseExecutionOutcome that wraps the phase return value (or exception) of the final phase run. All intermediary results, if any, are REPEAT and handled internally. Returning REPEAT here means the phase hit its limit for repetitions. """

    repeat_count = 1
    repeat_limit = phase.options.repeat_limit or sys.maxsize
    while not self._stopping.is_set():
      is_last_repeat = repeat_count >= repeat_limit
      phase_execution_outcome = self._execute_phase_once(phase, is_last_repeat)

      if phase_execution_outcome.is_repeat and not is_last_repeat:
        repeat_count += 1
        continue

      return phase_execution_outcome
    # We've been cancelled, so just 'timeout' the phase.
    return PhaseExecutionOutcome(None)