raw method
The low-level primitive for reducing a Outcome chain. It recursively unwraps all Outcome layers to return the innermost raw value, forcing the caller to handle terminal states via callbacks.
Implementation
FutureOr<Object> raw({
required FutureOr<Object> Function(Err<Object> err) onErr,
required FutureOr<Object> Function() onNone,
}) {
FutureOr<Object> dive(Object obj) {
return switch (obj) {
Err() => onErr(obj),
None() => onNone(),
Outcome(value: final okValue) =>
okValue is Future<Object> ? okValue.then(dive) : dive(okValue),
Object() => obj,
};
}
return dive(this);
}