Hmm, only thing is when there is a recurring error in `switch_state` or the things it calls. Since we need to switch to the error state, we could end up with endless recursion. Maybe we need a `force_switch_state` or something?