raw method

FutureOr<Object> raw({
  1. required FutureOr<Object> onErr(
    1. Err<Object> err
    ),
  2. required FutureOr<Object> onNone(),
})

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.

  • onErr: A function that is called when an Err is encountered.
  • onNone: A function that is called when a None is encountered.

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);
}