thenNext<R> method

Cancelable<R> thenNext<R>(
  1. FutureOr<R> onValue(
    1. O value
    )?, [
  2. FutureOr<R> onError(
    1. Object error
    )?
])

Implementation

Cancelable<R> thenNext<R>(FutureOr<R> Function(O value)? onValue,
    [FutureOr<R> Function(Object error)? onError]) {
  final resultCompleter = Completer<R>();
  _completer.future.then((value) {
    try {
      _completeValue(
        completer: resultCompleter,
        value: onValue?.call(value),
      );
    } catch (error) {
      _completeError(
        completer: resultCompleter,
        onError: onError,
        e: error,
      );
    }
  }, onError: (Object e) {
    if (e is! CanceledError) {
      _completeError(
        completer: resultCompleter,
        onError: onError,
        e: e,
      );
    }
  });
  return Cancelable(
    completer: resultCompleter,
    task: _task,
    onCancel: () {
      _onCancel?.call();
      _completeError(
        completer: resultCompleter,
        e: CanceledError(),
        onError: onError,
      );
    },
    onPause: _onPause,
    onResume: _onResume,
  );
}