code: func (r *Rescan) Start() <-chan error {
  	errChan := make(chan error, 1)
  
  	if !atomic.CompareAndSwapUint32(&r.started, 0, 1) {
  		errChan <- fmt.Errorf("Rescan already started")
  		return errChan
  	}
  
  	r.wg.Add(1)
  	go func() {
  		defer r.wg.Done()
  
  		rescanArgs := append(r.options, updateChan(r.updateChan))
  		err := rescan(r.chain, rescanArgs...)
  
  		close(r.running)
  
  		r.errMtx.Lock()
  		r.err = err
  		r.errMtx.Unlock()
  
  		errChan <- err
  	}()
  
  	return errChan
  }
docs: // Start kicks off the rescan goroutine, which will begin to scan the chain
  // according to the specified rescan options.