diff --git a/cassandra/cluster.py b/cassandra/cluster.py index 88c8d2707a..56b0d3b603 100644 --- a/cassandra/cluster.py +++ b/cassandra/cluster.py @@ -5040,7 +5040,11 @@ def _query(self, host, message=None, cb=None): result_meta = self._bound_result_metadata if cb is None: - cb = partial(self._set_result, host, connection, pool) + _set_result = self._set_result + + # default-arg capture avoids late-binding of host/connection/pool in the closure + def cb(response, _h=host, _c=connection, _p=pool, _sr=_set_result): + _sr(_h, _c, _p, response) self.request_encoded_size = connection.send_msg(message, request_id, cb=cb, encoder=self._protocol_handler.encode_message,