Isn't this what Unwrap() is for? errors.Is calls Unwrap if it's available and then compares _that_ error.
Yes, but “an Is method should only shallowly compare err and the target and not call Unwrap on either”:
https://pkg.go.dev/errors#Is