clarify when we need to hold the watcherLifetimeLock