feat(watch): add cancelable watch

Implement actual cancelable watch.