Handler for watcher events. Methods are async and normally awaited by the coordinator,
providing blocking semantics matching Rollup’s behavior. A close request may interrupt the
wait for on_event, on_change, or on_restart so callbacks can close their own watcher.