reduce<R extends Object> method
Reduces any nested Outcome structure into a single TResolvableOption.
This flattens all Outcome layers (Option, Result, Resolvable) into a final container that is always a Resolvable holding an Option. An Err state at any level will result in a failed Resolvable.
Implementation
TResolvableOption<R> reduce<R extends Object>() {
return switch (this) {
Some(value: final someValue) => Resolvable(() => Some(someValue as R)),
Some(value: Outcome<Object> outcomeValue) => outcomeValue.reduce<R>(),
None() => syncNone<R>(),
Ok(value: final someValue) => Resolvable(() => Some(someValue as R)),
Ok(value: Outcome<Object> outcomeValue) => outcomeValue.reduce<R>(),
Err(error: final error) => Sync.err(Err(error)),
Sync(value: final result) => result.reduce<R>(),
Async(value: final futureResult) => Async<Option<R>>(() async {
final result = await futureResult;
final innerResolvable = result.reduce<R>();
return (await innerResolvable.value).unwrap();
}),
};
}