diff --git a/coolamqp/clustering/cluster.py b/coolamqp/clustering/cluster.py
index f5216f3cadb1305ff63de1091ab8e9eacec9ee61..ba120ff63ea16ac6218512bf8a03acb2188ac44e 100644
--- a/coolamqp/clustering/cluster.py
+++ b/coolamqp/clustering/cluster.py
@@ -176,12 +176,10 @@ class Cluster(object):
         self.snr = SingleNodeReconnector(self.node, self.attache_group, self.listener)
         self.snr.on_fail.add(lambda: self.events.put_nowait(ConnectionLost()))
         if self.on_fail is not None:
-
-            def nice():
-                if not self.snr.terminating:
-                    self.on_fail()
-
-            self.snr.on_fail.add(nice)
+            self.snr.on_fail.add(
+                (lambda snr, of: lambda: of() if not snr.terminating else None)(
+                    self.snr, self.on_fail)
+            )
 
         # Spawn a transactional publisher and a noack publisher
         self.pub_tr = Publisher(Publisher.MODE_CNPUB)