end method

  1. @override
void end()
override

Suppresses the linter error must_use_outcome. Returns void in every subtype — calling .end() is the "I am intentionally discarding this Outcome" marker, so the call site never needs to think about a Future. For Async this means the underlying future is detached internally via unawaited(...); if you actually need to await completion, use .value.

Implementation

@override
@pragma('vm:prefer-inline')
void end() {
  // `.end()` is the "discard this Outcome" marker — deliberately detach the
  // future. Callers who need to await settlement should use `.value`. The
  // outer `try` is belt-and-braces: `value.then(...).catchError(...)` is
  // not expected to throw synchronously, but the package contract is that
  // `.end()` *never* throws — so we absorb anything the getter or future
  // chain could conceivably surface (e.g., a future-chain failure on a
  // weird host platform).
  try {
    unawaited(value.then((e) => e.end()).catchError((_) {}));
  } catch (_) {
    // Swallow — `.end()` must never escape.
  }
}