diff --git a/synapse/notifier.py b/synapse/notifier.py
index b9d52d0c4c1f48db51c91586a9168959911b4c1c..3aec1d4af23aa92cc3af064cd92fc643280377d1 100644
--- a/synapse/notifier.py
+++ b/synapse/notifier.py
@@ -244,14 +244,14 @@ class Notifier(object):
             )
 
         if timeout:
-            self.clock.call_later(timeout/1000.0, _timeout_listener)
-
             self._register_with_keys(listener)
 
         yield self._check_for_updates(listener)
 
         if not timeout:
             _timeout_listener()
+        else:
+            self.clock.call_later(timeout/1000.0, _timeout_listener)
 
         return