Propagate TimeoutException in awaitCompletion
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
index 4808f23..4006a33 100644
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
+++ b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
@@ -18,12 +18,14 @@
  */
 package org.jclouds.chef.strategy.internal;
 
+import static com.google.common.base.Throwables.propagate;
 import static com.google.common.collect.Maps.newHashMap;
 import static org.jclouds.concurrent.FutureIterables.awaitCompletion;
 
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
+import java.util.concurrent.TimeoutException;
 
 import javax.annotation.Resource;
 import javax.inject.Named;
@@ -58,8 +60,8 @@
    protected Long maxTime;
 
    @Inject
-   DeleteAllClientsInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor,
-         ChefApi getAllApi, ChefAsyncApi ablobstore) {
+   DeleteAllClientsInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor, ChefApi getAllApi,
+         ChefAsyncApi ablobstore) {
       this.userExecutor = userExecutor;
       this.chefAsyncApi = ablobstore;
       this.chefApi = getAllApi;
@@ -72,8 +74,12 @@
       for (String name : names) {
          responses.put(name, chefAsyncApi.deleteClient(name));
       }
-      exceptions = awaitCompletion(responses, userExecutor, maxTime, logger, String.format(
-            "deleting apis: %s", names));
+      try {
+         exceptions = awaitCompletion(responses, userExecutor, maxTime, logger,
+               String.format("deleting apis: %s", names));
+      } catch (TimeoutException e) {
+         propagate(e);
+      }
       if (exceptions.size() > 0)
          throw new RuntimeException(String.format("errors deleting clients: %s: %s", names, exceptions));
    }
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
index 50721d3..24a6ab2 100644
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
+++ b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
@@ -18,20 +18,22 @@
  */
 package org.jclouds.chef.strategy.internal;
 
+import static com.google.common.base.Throwables.propagate;
 import static com.google.common.collect.Maps.newHashMap;
 import static org.jclouds.concurrent.FutureIterables.awaitCompletion;
 
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
+import java.util.concurrent.TimeoutException;
 
 import javax.annotation.Resource;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
 import org.jclouds.Constants;
-import org.jclouds.chef.ChefAsyncApi;
 import org.jclouds.chef.ChefApi;
+import org.jclouds.chef.ChefAsyncApi;
 import org.jclouds.chef.config.ChefProperties;
 import org.jclouds.chef.strategy.DeleteAllNodesInList;
 import org.jclouds.logging.Logger;
@@ -58,8 +60,8 @@
    protected Long maxTime;
 
    @Inject
-   DeleteAllNodesInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor,
-         ChefApi getAllNode, ChefAsyncApi ablobstore) {
+   DeleteAllNodesInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ExecutorService userExecutor, ChefApi getAllNode,
+         ChefAsyncApi ablobstore) {
       this.userExecutor = userExecutor;
       this.chefAsyncApi = ablobstore;
       this.chefApi = getAllNode;
@@ -72,8 +74,12 @@
       for (String name : names) {
          responses.put(name, chefAsyncApi.deleteNode(name));
       }
-      exceptions = awaitCompletion(responses, userExecutor, maxTime, logger, String.format(
-            "deleting nodes: %s", names));
+      try {
+         exceptions = awaitCompletion(responses, userExecutor, maxTime, logger,
+               String.format("deleting nodes: %s", names));
+      } catch (TimeoutException e) {
+         propagate(e);
+      }
       if (exceptions.size() > 0)
          throw new RuntimeException(String.format("errors deleting nodes: %s: %s", names, exceptions));
    }