code: func (r *Rescan) Update(options ...UpdateOption) error {
  
  	ro := defaultRescanOptions()
  	for _, option := range r.options {
  		option(ro)
  	}
  
  	uo := defaultUpdateOptions()
  	for _, option := range options {
  		option(uo)
  	}
  
  	select {
  	case r.updateChan <- uo:
  	case <-ro.quit:
  		return ErrRescanExit
  
  	case <-r.running:
  		errStr := "Rescan is already done and cannot be updated."
  		r.errMtx.Lock()
  		if r.err != nil {
  			errStr += fmt.Sprintf(" It returned error: %s", r.err)
  		}
  		r.errMtx.Unlock()
  		return fmt.Errorf(errStr)
  	}
  
  	return nil
  }
docs: // Update sends an update to a long-running rescan/notification goroutine.