implement the Unwrap method for custom error types #2857
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Since the introduction of error wrapping in Go 1.13, more and more Go errors implement the
Unwrap
method to work with the new error checking paradigm usingerrors.{Is,As}
. This PR is to implement such anUnwrap
method for custom error types defined in this library that wrap around a privateError
. By implementingUnwrap
that returns the privateError
, these custom errors will be automatically seen by the Go standard library as wrappers of the privateError
. Here's some sample code enabled by this PR:This is extremely useful when trying to distinguish "errors from the Cloudflare API itself" and "errors due to other reasons (e.g., network errors)". Also, for reasons, only
cloudflare.Error
implements theErrorMessageContains
method. In sum, theUnwrap
function gives users a clean interface to retrieve the privateError
that works very well with the current Go standard library.Has your change been tested?
Not yet. I'm worried a test involving
errors.As
would not run on platforms using older Go compilers.Types of changes
What sort of change does your code introduce/modify?
Checklist: