diff --git a/bindings/pyroot/JupyROOT/helpers/handlers.py b/bindings/pyroot/JupyROOT/helpers/handlers.py
index dd4904dfa2cc7d0866100f6fc3b5f2236e5c32ed..635aa2ce5323cda69605979aded33f8d19742ab1 100644
--- a/bindings/pyroot/JupyROOT/helpers/handlers.py
+++ b/bindings/pyroot/JupyROOT/helpers/handlers.py
@@ -88,6 +88,7 @@ class Poller(Thread):
                 self.ro_ref().is_running = False
             else:
                 self.poll = False
+                self.ro_ref().is_running = False
         return
 
 class Runner(object):
@@ -107,7 +108,7 @@ class Runner(object):
     >>> r.AsyncRun("Asynchronous");print("Synchronous");time.sleep(1)
     Synchronous
     Asynchronous
-    >>> r.AsyncRun("Asynchronous"); print(r.HasFinished())
+    >>> r.AsyncRun("Asynchronous"); time.sleep(.2); print(r.HasFinished())
     False
     >>> time.sleep(1)
     Asynchronous
@@ -131,20 +132,16 @@ class Runner(object):
         return self.function(argument)
 
     def AsyncRun(self, argument):
-        self.is_running = True
         self.argument_queue.put(argument)
 
     def Wait(self):
         while self.is_running: pass
 
     def HasFinished(self):
-        if self.is_running: return False
-        return True
+        return False if self.is_running else True
 
     def Stop(self):
-        self.Wait()
         self.argument_queue.put(None)
-        self.Wait()
 
 
 class JupyROOTDeclarer(Runner):