addSafe method
Adds a handler
to the queue that processes the previous value.
The buffer
duration can be used to throttle the execution.
Implementation
Resolvable<Option<T>> addSafe(
@noFuturesAllowed
Resolvable<Option<T>>? Function(Result<Option<T>> previous) handler, {
Duration? buffer,
_TOnPrevErr<T>? onPrevErr,
bool? eagerError,
}) {
final buffer1 = buffer ?? _buffer;
if (buffer1 == null) {
return _enqueue(handler, onPrevErr, eagerError);
} else {
return _enqueue(
(previous) {
return Resolvable(() async {
final a = await Future.wait<dynamic>([
// TODO: false positive linter!
// ignore: must_await_all_futures
Future<Resolvable<Option<T>>?>.value(handler(previous)),
// TODO: false positive linter!
// ignore: must_await_all_futures
Future<void>.delayed(buffer1),
]);
return (a.first as Resolvable<Option<T>>?) ??
Resolvable(() => None<T>());
}).flatten();
},
onPrevErr,
eagerError,
);
}
}