code: func (q *delayingType) AddAfter(item interface{}, duration time.Duration) {
  	// don't add if we're already shutting down
  	if q.ShuttingDown() {
  		return
  	}
  
  	q.metrics.retry()
  	q.deprecatedMetrics.retry()
  
  	// immediately add things with no delay
  	if duration <= 0 {
  		q.Add(item)
  		return
  	}
  
  	select {
  	case <-q.stopCh:
  		// unblock if ShutDown() is called
  	case q.waitingForAddCh <- &waitFor{data: item, readyAt: q.clock.Now().Add(duration)}:
  	}
  }
docs: // AddAfter adds the given item to the work queue after the given delay