shutdown method
Shuts down every provider and resets this API for reuse (1.6). Concurrent calls share one operation; cleanup continues after failures.
Implementation
Future<void> shutdown() {
if (_disposed) return _disposeFuture ?? Future<void>.value();
return _shutdownFuture ?? _beginShutdown();
}