code: func (helper *CacheHelper) DoWatching(resyncName string, watcher datasync.KeyValProtoWatcher) {
  	changeChan := make(chan datasync.ChangeEvent, 100)
  	resyncChan := make(chan datasync.ResyncEvent, 100)
  
  	watcher.Watch(resyncName, changeChan, resyncChan, helper.Prefix)
  
  	for {
  		select {
  		case resyncEv := <-resyncChan:
  			err := helper.DoResync(resyncEv)
  			resyncEv.Done(err)
  		case dataChng := <-changeChan:
  			for _, change := range dataChng.GetChanges() {
  				err := helper.DoChange(change)
  				dataChng.Done(err)
  			}
  		}
  	}
  }
docs: // DoWatching reflects data change and data resync events received from
  // <watcher> into the idxmap.