Why it matters
The container tracks everything it creates so it can dispose it, but a synchronous Dispose() on the provider or a scope has no synchronous disposal method to call. Rather than skipping the service, ServiceProvider throws InvalidOperationException: *"'X' type only implements IAsyncDisposable. Use DisposeAsync to dispose the container."* The failure surfaces at shutdown or at the end of a scope, which is exactly where it is hardest to notice in testing.