diff --git a/lib/workerpool.py b/lib/workerpool.py
index 33ef9328aff9bb30cc71d2ff3c6a889982fcfe5f..8127329467897fecc45a60f9cc904037a520c777 100644
--- a/lib/workerpool.py
+++ b/lib/workerpool.py
@@ -78,9 +78,8 @@ class BaseWorker(threading.Thread, object):
     """
     pool = self.pool
 
-    assert self._current_task is None
-
     while True:
+      assert self._current_task is None
       try:
         # Wait on lock to be told either to terminate or to do a task
         pool._lock.acquire()
@@ -97,7 +96,11 @@ class BaseWorker(threading.Thread, object):
 
           self._current_task = task
 
+          # No longer needed, dispose of reference
+          del task
+
           assert self._HasRunningTaskUnlocked()
+
         finally:
           pool._lock.release()