code: func NewPromoter(setts *account.Settings, interval time.Duration) *Promoter {
  	if setts.EventMachine == nil {
  		setts.EventMachine = &event.DiscardEventMachine{}
  	}
  	promoter := &Promoter{
  		interval: interval, setts: setts,
  		tailCache: make(map[string]*transaction.Transaction),
  	}
  	promoter.syncTimer = util.NewSyncIntervalTimer(interval, promoter.promote, func(err error) {
  		promoter.setts.EventMachine.Emit(err, event.EventError)
  	})
  	return promoter
  }
docs: // NewPromoter creates a new Promoter. If the interval is set to 0, the Promoter will only
  // promote/reattach through PromoteReattach().