dispose method
Terminal, idempotent cleanup. Pending tasks retain their result/error.
Implementation
Future<void> dispose() {
if (_disposeFuture != null) return _disposeFuture!;
_disposed = true;
_runningCounts.clear();
_actively = false;
return _disposeFuture = _disposeResources();
}