This could result in a callback being invoked multiple times with the same message; we need a lock around access of `_watches`.  Don't worry about it though, I'll fix.