Effect.gen is "early return" by yielding an error. Eg.fp-ts where Option.match forced the indentation of the main path under onSome.maybeValue above is not narrowed to Option.Some<...>, its type is Option.Option<...>. I've found a few alternatives but none I'm fully satisfied with.