private static async Task terminateInstance(ComputeClient computeClient, Instance instance)
        {
            logger.Info($"Terminating Instance: {instance.Id}");
            TerminateInstanceRequest terminateInstanceRequest = new TerminateInstanceRequest {
                InstanceId = instance.Id
            };
            await computeClient.TerminateInstance(terminateInstanceRequest);

            WaiterConfiguration waiterConfiguration = new WaiterConfiguration
            {
                MaxAttempts           = 20,
                GetNextDelayInSeconds = DelayStrategy.GetExponentialDelayInSeconds
            };
            GetInstanceRequest getInstanceRequest = new GetInstanceRequest {
                InstanceId = instance.Id
            };

            computeClient.Waiters.ForInstance(getInstanceRequest, waiterConfiguration, Instance.LifecycleStateEnum.Terminated).Execute();

            logger.Info($"Terminated Instance: {instance.Id}");
        }