52
// NOTE: not using errors.Unwrap here we are intentionally only supporting unwrapping known errors.
53
switch typedErr := err.(type) {
55
>
f := typedErr.Failure
56
>
// FailureError is has both a Cause error and an underlying Failure Cause.
57
>
// When instantiated directly, there are cases where only the Go error cause is set.
58
>
// Preserve the embedded failure's cause, as the embedded failure is treated similarly to the OriginalFailure field for well-known other error types.
59
>
if typedErr.Cause != nil && f.Cause == nil {
60
c, err := e.ErrorToFailure(typedErr.Cause)
61
if err != nil {