dispose method

void dispose()

Detach from the Command and fail pending state waiters.

Implementation

void dispose() {
  if (_disposed) return;
  _disposed = true;
  command.removeListener(_handleChange);

  const error = EffectCommandProbeDisposedException();
  for (final waiter in List<_CommandStateWaiter<A, E>>.of(_waiters)) {
    if (!waiter.completer.isCompleted) {
      waiter.completer.completeError(error, StackTrace.current);
    }
  }
  _waiters.clear();
}