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}"); }