private AsyncLifetimeManager BuildLifetimeManager() { async Task InitializeAsync(CancellationToken cancellation) { var messageHandlerProvider = _localMessageDispatcher.MessageHandlerProvider; var routeRegistrations = GetRouteRegistrations(messageHandlerProvider); var registrationOperations = routeRegistrations.Select(p => _messageRouter.RegisterRouteAsync(p, cancellation: default)); await Task.WhenAll(registrationOperations); } async Task DisposeAsync() { try { await _messageRouter.UnregisterRoutesAsync(removePersistentRoutes : false); } finally { _messageRouter.Dispose(); } } return(new AsyncLifetimeManager(InitializeAsync, DisposeAsync)); }