chore(watch/cancel): protect watcherHub with a lock
chore(watch/cancel): rename watcher.Cancel() to watcher.Remove()