apply async waterfall to watcher