Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit cd85afc

Browse files
committed
Fix stacktraces when using ObservableDeferred and async/await (#6836)
* commit 'ae5b3104f': Fix stacktraces when using ObservableDeferred and async/await (#6836)
2 parents c3b7b10 + ae5b310 commit cd85afc

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

changelog.d/6836.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix stacktraces when using `ObservableDeferred` and async/await.

synapse/util/async_helpers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ def callback(r):
7373
def errback(f):
7474
object.__setattr__(self, "_result", (False, f))
7575
while self._observers:
76+
# This is a little bit of magic to correctly propagate stack
77+
# traces when we `await` on one of the observer deferreds.
78+
f.value.__failure__ = f
79+
7680
try:
7781
# TODO: Handle errors here.
7882
self._observers.pop().errback(f)

0 commit comments

Comments
 (0)