func processResolveError()

in pkg/confidence/utils.go [101:139]


func processResolveError(err error, defaultValue interface{}) InterfaceResolutionDetail {
	// Try to unwrap the error to find the underlying type
	var netErr net.Error
	if errors.As(err, &netErr) && netErr.Timeout() {
		return InterfaceResolutionDetail{
			Value: defaultValue,
			ResolutionDetail: ResolutionDetail{
				Variant:      "",
				Reason:       DefaultReason,
				ErrorCode:    TimeoutCode,
				ErrorMessage: "error when resolving, timeout",
				FlagMetadata: nil,
			}}
	}

	switch {
	case errors.Is(err, errFlagNotFound):
		return InterfaceResolutionDetail{
			Value: defaultValue,
			ResolutionDetail: ResolutionDetail{
				Variant:      "",
				Reason:       DefaultReason,
				ErrorCode:    FlagNotFoundCode,
				ErrorMessage: "error when resolving, flag not found",
				FlagMetadata: nil,
			},
		}
	default:
		return InterfaceResolutionDetail{
			Value: defaultValue,
			ResolutionDetail: ResolutionDetail{
				Variant:      "",
				Reason:       DefaultReason,
				ErrorCode:    GeneralCode,
				ErrorMessage: "error when resolving, returning default value",
				FlagMetadata: nil,
			}}
	}
}