code: func (p *Pool) Put(x interface{}) {
  	if x == nil {
  		return
  	}
  	p.mu.Lock()
  	if p.list == nil {
  		if p.drainTicker == nil && p.DrainPeriod != 0 {
  			p.drainTicker = time.NewTicker(p.DrainPeriod)
  			go func() {
  				for _ = range p.drainTicker.C {
  					p.Drain()
  				}
  			}()
  		}
  	}
  	p.list = append(p.list, x)
  	p.mu.Unlock()
  }
docs: // Put adds x to the pool.