code: func (c *channelPool) Get() (IOSession, error) {
  	conns := c.getConns()
  	if conns == nil {
  		return nil, ErrClosed
  	}
  
  	// wrap our connections with out custom net.Conn implementation (wrapConn
  	// method) that puts the connection back to the pool if it's closed.
  	select {
  	case conn := <-conns:
  		if conn == nil {
  			return nil, ErrClosed
  		}
  
  		return conn, nil
  	default:
  		conn, err := c.factory()
  		if err != nil {
  			return nil, err
  		}
  
  		return conn, nil
  	}
  }
docs: // Get implements the Pool interfaces Get() method. If there is no new
  // connection available in the pool, a new connection will be created via the
  // Factory() method.