package merrors import ( "errors" "strings" ) func Reason(err error) (string, bool) { var reasoned interface { Reason() string } if errors.As(err, &reasoned) { reason := strings.TrimSpace(reasoned.Reason()) if reason != "" { return reason, true } } return "", false }