code: func newBaseConnectionPool(
  	options ConnectionOptions,
  	createPool func(rp.Options) rp.ResourcePool) ConnectionPool {
  
  	dial := options.Dial
  	if dial == nil {
  		dial = defaultDialFunc
  	}
  
  	openFunc := func(loc string) (interface{}, error) {
  		network, address := parseResourceLocation(loc)
  		return dial(network, address)
  	}
  
  	closeFunc := func(handle interface{}) error {
  		return handle.(net.Conn).Close()
  	}
  
  	poolOptions := rp.Options{
  		MaxActiveHandles:   options.MaxActiveConnections,
  		MaxIdleHandles:     options.MaxIdleConnections,
  		MaxIdleTime:        options.MaxIdleTime,
  		OpenMaxConcurrency: options.DialMaxConcurrency,
  		Open:               openFunc,
  		Close:              closeFunc,
  		NowFunc:            options.NowFunc,
  	}
  
  	return &connectionPoolImpl{
  		options: options,
  		pool:    createPool(poolOptions),
  	}
  }
docs: // This returns a connection pool where all connections are connected
  // to the same (network, address)