exceptions should be catched in a watcher callback