+
+func deadlineOnly(err error) bool {
+ joined, ok := err.(interface{ Unwrap() []error })
+ if ok {
+ found := false
+
+ for _, cause := range joined.Unwrap() {
+ if cause != nil {
+ found = true
+ if !deadlineOnly(cause) {
+ return false
+ }
+ }
+ }
+
+ return found
+ }
+
+ wrapped, ok := err.(interface{ Unwrap() error })
+ if ok {
+ return deadlineOnly(wrapped.Unwrap())
+ }
+
+ return errors.Is(err, os.ErrDeadlineExceeded)
+}