code: func (t *Transport) putIdleConn(pconn *persistConn) bool {
  	t.lk.Lock()
  	defer t.lk.Unlock()
  	if t.DisableKeepAlives || t.MaxIdleConnsPerHost < 0 {
  		pconn.close()
  		return false
  	}
  	if pconn.isBroken() {
  		return false
  	}
  	key := pconn.cacheKey
  	max := t.MaxIdleConnsPerHost
  	if max == 0 {
  		max = DefaultMaxIdleConnsPerHost
  	}
  	if len(t.idleConn[key]) >= max {
  		pconn.close()
  		return false
  	}
  	t.idleConn[key] = append(t.idleConn[key], pconn)
  	return true
  }
docs: // putIdleConn adds pconn to the list of idle persistent connections awaiting
  // a new request.
  // If pconn is no longer needed or not in a good state, putIdleConn
  // returns false.