diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py
index 4dce984c1aac955976c6a93fe0aef07982723b65..5b0b798e57b5574315329a84a4c8f01cc69c9b0b 100644
--- a/synapse/federation/transaction_queue.py
+++ b/synapse/federation/transaction_queue.py
@@ -227,7 +227,7 @@ class TransactionQueue(object):
 
                 yield logcontext.make_deferred_yieldable(defer.gatherResults(
                     [
-                        logcontext.preserve_fn(handle_room_events)(evs)
+                        logcontext.run_in_background(handle_room_events, evs)
                         for evs in events_by_room.itervalues()
                     ],
                     consumeErrors=True