diff --git a/sutils/async.py b/sutils/async.py
index 75f89eb7..0bd6e3fa 100644
--- a/sutils/async.py
+++ b/sutils/async.py
@@ -98,6 +98,9 @@ def finish(self, thread_id, ret_val):
 
         callback(ret_val)
 
+        while not self.threads[thread_id].isFinished():
+            pass
+
         del self.threads[thread_id]
         del self.callbacks[thread_id]
 
diff --git a/sutils/async_threads.py b/sutils/async_threads.py
index 509d4f96..8aac0c52 100644
--- a/sutils/async_threads.py
+++ b/sutils/async_threads.py
@@ -96,6 +96,9 @@ def finish(self, thread_id, ret_val):
 
         callback(ret_val)
 
+        while not self.threads[thread_id].isFinished():
+            pass
+
         del self.threads[thread_id]
         del self.callbacks[thread_id]