private async Task DeleteDeployment(ActiveDeployment storageDeployment)
        {
            _logger.LogDebug($"[DeleteStorage={storageDeployment.StorageName}] Deleting storage");

            using (var cts = new CancellationTokenSource())
            {
                // runs in background
                var renewer = _leaseMaintainer.MaintainLease(storageDeployment, cts.Token);

                try
                {
                    var repository = await _assetRepoCoordinator.GetRepository(storageDeployment.StorageName);

                    if (repository != null)
                    {
                        await _assetRepoCoordinator.DeleteRepositoryResourcesAsync(repository, storageDeployment.DeleteResourceGroup);
                    }

                    _logger.LogDebug($"[DeleteStorage={storageDeployment.StorageName}] Deleting queue message {storageDeployment.MessageId} with receipt {storageDeployment.PopReceipt}");

                    await _deploymentQueue.Delete(storageDeployment.MessageId, storageDeployment.PopReceipt);
                }
                catch (CloudException e)
                {
                    _logger.LogError(e, $"[DeleteStorage={storageDeployment.StorageName}]");
                }
                finally
                {
                    cts.Cancel();

                    try
                    {
                        await renewer;
                    }
                    catch (OperationCanceledException)
                    {
                        // expected
                    }
                }
            }
        }
        private async Task DeleteDeployment(ActiveDeployment activeDeployment)
        {
            _logger.LogDebug($"Deleting file server {activeDeployment.FileServerName}");

            using (var cts = new CancellationTokenSource())
            {
                // runs in background
                var renewer = _leaseMaintainer.MaintainLease(activeDeployment, cts.Token);

                try
                {
                    var repository = await _assetRepoCoordinator.GetRepository(activeDeployment.FileServerName);

                    if (repository != null)
                    {
                        await _assetRepoCoordinator.DeleteRepositoryResourcesAsync(repository, _managementClientProvider);
                    }

                    await _deploymentQueue.Delete(activeDeployment.MessageId, activeDeployment.PopReceipt);
                }
                catch (CloudException e)
                {
                    _logger.LogError(e, $"Error deleting file server {activeDeployment.FileServerName}");
                }
                finally
                {
                    cts.Cancel();

                    try
                    {
                        await renewer;
                    }
                    catch (OperationCanceledException)
                    {
                        // expected
                    }
                }
            }
        }