better error handling

* by default stop transitioning
* override handleError for recovery