func newUnitToolWaiter(u *state.Unit) *toolsWaiter { w := u.Watch() waiter := &toolsWaiter{ changes: make(chan struct{}, 1), watcher: w, tooler: u, } go func() { for _ = range w.Changes() { waiter.changes <- struct{}{} } close(waiter.changes) }() return waiter }