If someone passes in `SubscriptionState.MUTATING` it would spin forever I believe. So perhaps we need to also assert that `newState` is not `SubscriptionState.MUTATING`?