diff --git a/synapse/notifier.py b/synapse/notifier.py
index 1656717cd7d7ea1afa2b99f5e43934c0b3a025ac..3d3fcdabdb151575fa8bb6ccb05db8223aa966d3 100644
--- a/synapse/notifier.py
+++ b/synapse/notifier.py
@@ -178,9 +178,13 @@ class Notifier(object):
         if timeout:
             reactor.callLater(timeout/1000, self._timeout_listener, listener)
 
-        self._register_with_keys(listener)
+            self._register_with_keys(listener)
+
         yield self._check_for_updates(listener)
 
+        if not timeout:
+            self._timeout_listener(listener)
+
         return
 
     def _timeout_listener(self, listener):