code: func (q *DurableQueue) Pull(timeout time.Duration) (payload []byte, err error) {
  	cnx := q.pool.Get()
  	defer cnx.Close()
  
  	return q.Processor().PullTo(cnx, q.Source(), q.Dest(), timeout)
  }
docs: // Pull implements the Pull function on the Queue interface. Unlike common
  // implementations of the Queue type, it mutates the Redis keyspace twice, by
  // removing an item from one LIST and popping it onto another. It does so by
  // delegating into the processor, thus blocking until the processor returns.