state: stop watchers if state.newState fails

Came across this bug while trying to make the
tests more reliable.