then method

TResolvableOption<T> then(
  1. @noFutures TTaskHandler<T> handler, {
  2. @noFutures TOnTaskError? onPrevError,
  3. bool? eagerError,
  4. Duration? minTaskDuration,
})

Appends a new task to the sequence.

If the sequencer is already running, the task is added to a re-entrant queue to be processed after the current task completes. Otherwise, it is executed immediately.

Implementation

TResolvableOption<T> then(
  @noFutures TTaskHandler<T> handler, {
  @noFutures TOnTaskError? onPrevError,
  bool? eagerError,
  Duration? minTaskDuration,
}) {
  final task = Task<T>(
    handler: handler,
    onError: onPrevError,
    eagerError: eagerError,
    minTaskDuration: minTaskDuration,
  );
  if (isExecuting) {
    _reentrantQueue.add(task);
    return _current;
  }
  return _chainTask(task);
}