When a Cause contains a Die or Interrupt alongside a typed Fail, recovery operators must not treat it as a recoverable failure.

Previously, failureOrCause / failureTraceOrCause would extract the typed failure even if the Cause also contained a defect or interruption, allowing operators like catchAll, catchSome, and either to incorrectly recover.

This change ensures that if the Cause contains any Die or Interrupt, the original Cause is returned instead of a typed failure.

Adds regression tests in ZIOSpec. Fixes #9874 /claim #9874

Claim

Total prize pool $300
Total paid $0
Status Pending
Submitted February 15, 2026
Last updated February 15, 2026

Contributors

KR

krapcys1-maker

@krapcys1-maker

100%

Sponsors

ZI

ZIO

@ZIO

$300