I have taken the first approach and use a lock to protect `watcherHub`: 51b162e