The following sequence is possible:
  1. new subsystems are queued into w.names
  2. w.watch goroutine receives the new subsystems
  3. w.watch goroutine runs idle on the new subsystems
  4. noIdle is called here, thus ending the idle before receiving its result