code: func (p *ConnPool) clearConn(conn *Conn) {
  	// Ensure returned streams are closed
  	atomic.StoreInt32(&conn.shouldClose, 1)
  
  	// Clear from the cache
  	addrStr := conn.addr.String()
  	p.Lock()
  	if c, ok := p.pool[addrStr]; ok && c == conn {
  		delete(p.pool, addrStr)
  	}
  	p.Unlock()
  
  	// Close down immediately if idle
  	if refCount := atomic.LoadInt32(&conn.refCount); refCount == 0 {
  		conn.Close()
  	}
  }
docs: // clearConn is used to clear any cached connection, potentially in response to an error