diff --git a/googleapi/googleapi.go b/googleapi/googleapi.go index a520579e12d..65b125abd2c 100644 --- a/googleapi/googleapi.go +++ b/googleapi/googleapi.go @@ -79,8 +79,9 @@ type Error struct { Header http.Header Errors []ErrorItem - // Err is a wrapped apierror.APIError, typically derived from this Error. - Err error + // err is typically a wrapped apierror.APIError, see + // google-api-go-client/internal/gensupport/error.go. + err error } // ErrorItem is a detailed error code & message from the Google API frontend. @@ -124,8 +125,13 @@ func (e *Error) Error() string { return buf.String() } +// Wrap allows an existing Error to wrap another error. See also [Error.Unwrap]. +func (e *Error) Wrap(err error) { + e.err = err +} + func (e *Error) Unwrap() error { - return e.Err + return e.err } type errorReply struct { diff --git a/internal/gensupport/error.go b/internal/gensupport/error.go index 339e4874d43..fa9d091930a 100644 --- a/internal/gensupport/error.go +++ b/internal/gensupport/error.go @@ -19,7 +19,7 @@ func WrapError(err error) error { apiError, ok := apierror.ParseError(err, false) var herr *googleapi.Error if ok && errors.As(err, &herr) { - herr.Err = apiError + herr.Wrap(apiError) } return err }