In this exercise, we’ll model what happens when the timer runs out using guarded transitions.
TICK event happens, make it so that we only increment context.elapsed when incrementing it won’t exceed the context.duration.expired state.cond, and optionally place it in the machine’s guards option.expired state, a RESET event should also transition back to idle.