code: func fallbackErr(err error) bool {
  	// Err shouldn't ever be nil if we're considering it for fallback
  	if err == nil {
  		return false
  	}
  
  	switch err := err.(type) {
  	case *url.Error:
  		// URL Errors should be unwrapped and tested
  		return fallbackErr(err.Err)
  	case *net.OpError:
  		// Net OpErrors are fallback errs only if the operation was a "dial"
  		return err.Op == "dial"
  	default:
  		// All other errs are not fallback errs
  		return false
  	}
  }
docs: // fallbackErr returns true only for net.OpError instances where the op is equal
  // to "dial", or url.Error instances wrapping such an error. fallbackErr returns
  // false for all other errors. By policy, only dial errors (not read or write
  // errors) are eligble for fallback from an IPv6 to an IPv4 address.