diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index cc769c4..883a7c8 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -39,6 +39,7 @@
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
@@ -642,6 +643,32 @@
     }
 
     /**
+     * Returns a future that's completed using the given {@link Executor} once the given {@code future} is completed.
+     * <p>
+     * {@link CompletableFuture}'s async methods cannot be relied upon to complete futures on an executor thread. If a
+     * future is completed synchronously, {@code CompletableFuture} async methods will often complete the future on the
+     * current thread, ignoring the provided {@code Executor}. This method ensures a more reliable and consistent thread
+     * model by ensuring that futures are always completed using the provided {@code Executor}.
+     *
+     * @param future the future to convert into an asynchronous future
+     * @param executor the executor with which to complete the returned future
+     * @param <T> future value type
+     * @return a new completable future to be completed using the provided {@code executor} once the provided
+     * {@code future} is complete
+     */
+    public static <T> CompletableFuture<T> asyncFuture(CompletableFuture<T> future, Executor executor) {
+        CompletableFuture<T> newFuture = new CompletableFuture<T>();
+        future.whenComplete((result, error) -> executor.execute(() -> {
+            if (future.isCompletedExceptionally()) {
+                newFuture.completeExceptionally(error);
+            } else {
+                newFuture.complete(result);
+            }
+        }));
+        return newFuture;
+    }
+
+    /**
      * Returns a new CompletableFuture completed with a list of computed values
      * when all of the given CompletableFuture complete.
      *
