fix #520 let watchers handle callbacks that trigger removeCb()