yield* pipe(
effectfulFnThatReturnsAnOption(),
Effect.andThen((maybeResult) =>
Option.match(maybeResult, {
onNone: () => Effect.succeed(Option.none()),
onSome: (result) =>
anotherEffectfulFn(result).pipe(Effect.andThen(Option.some)),
}),
),
);
yield* pipe(
effectfulFnThatReturnsAnOption(),
Effect.andThen((maybeResult) =>
Option.match(maybeResult, {
onNone: () => Effect.succeed(Option.none()),
onSome: (result) =>
anotherEffectfulFn(result).pipe(Effect.andThen(Option.some)),
}),
),
);