code: func NewBufferPool(baseline int) *BufferPool {
  	if baseline <= 0 {
  		panic("baseline can't be <= 0")
  	}
  	p := &BufferPool{
  		baseline0: baseline,
  		baseline:  [...]int{baseline / 4, baseline / 2, baseline * 2, baseline * 4},
  		closeC:    make(chan struct{}, 1),
  	}
  	for i, cap := range []int{2, 2, 4, 4, 2, 1} {
  		p.pool[i] = make(chan []byte, cap)
  	}
  	go p.drain()
  	return p
  }
docs: // NewBufferPool creates a new initialized 'buffer pool'.