message: fix cause stack safety
diff: @@ -566,48 +566,7 @@ export function keepDefects<E>(cause: Cause<E>): O.Option<Cause<never>> {
  export function sequenceCauseEither<E, A>(
  c: Cause<E.Either<E, A>>
  ): E.Either<Cause<E>, A> {
  - switch (c._tag) {
  - case "Empty": {
  - return E.left(Empty)
  - }
  - case "Interrupt": {
  - return E.left(c)
  - }
  - case "Fail": {
  - return c.value._tag === "Left"
  - ? E.left(Fail(c.value.left))
  - : E.right(c.value.right)
  - }
  - case "Die": {
  - return E.left(c)
  - }
  - case "Then": {
  - const [l, r] = [sequenceCauseEither(c.left), sequenceCauseEither(c.right)]
  -
  - if (l._tag === "Left") {
  - if (r._tag === "Right") {
  - return E.right(r.right)
  - } else {
  - return E.left(Then(l.left, r.left))
  - }
  - } else {
  - return E.right(l.right)
  - }
  - }
  - case "Both": {
  - const [l, r] = [sequenceCauseEither(c.left), sequenceCauseEither(c.right)]
  -
  - if (l._tag === "Left") {
  - if (r._tag === "Right") {
  - return E.right(r.right)
  - } else {
  - return E.left(Both(l.left, r.left))
  - }
  - } else {
  - return E.right(l.right)
  - }
  - }
  - }
  + return S.run(sequenceCauseEitherSafe(c))
  }
  /**
  @@ -807,26 +766,7 @@ export function stripFailuresSafe<E>(cause: Cause<E>): S.UIO<Cause<never>> {
  * Discards all typed failures kept on this `Cause`.
  */
  export function stripInterrupts<E>(cause: Cause<E>): Cause<E> {
  - switch (cause._tag) {
  - case "Empty": {
  - return Empty
  - }
  - case "Fail": {
  - return cause
  - }
  - case "Interrupt": {
  - return Empty
  - }
  - case "Die": {
  - return cause
  - }
  - case "Both": {
  - return Both(stripInterrupts(cause.left), stripInterrupts(cause.right))
  - }
  - case "Then": {
  - return Then(stripInterrupts(cause.left), stripInterrupts(cause.right))
  - }
  - }
  + return S.run(stripInterruptsSafe(cause))
  }
  /**
  