Correctly give cancelled watches a chance to run and get the notice

We now can wait to be signaled by the cancelled watcher since it will
have a chance to run and signal itself. This is a lot better than the
previous method which wouldn't give the callback the cancel notice until
the next time update was called.