// restoreStateWatcher watches for restoreInfo looking for changes in the restore process. func (a *MachineAgent) restoreStateWatcher(st *state.State, stopch <-chan struct{}) error { restoreWatch := st.WatchRestoreInfoChanges() defer func() { restoreWatch.Kill() restoreWatch.Wait() }() for { select { case <-restoreWatch.Changes(): if err := a.restoreChanged(st); err != nil { return err } case <-stopch: return nil } } }