transition
Execute the given transition on the given value.
If the target state is already present, then this is a no-op. If the provided transition cannot apply to the value's state, then this is a failure. Otherwise, the transition is applied and the state is updated in the returned value.