summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/futures.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/asyncio/futures.py')
-rw-r--r--Lib/asyncio/futures.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/Lib/asyncio/futures.py b/Lib/asyncio/futures.py
index d19e5d8..5d35321 100644
--- a/Lib/asyncio/futures.py
+++ b/Lib/asyncio/futures.py
@@ -269,9 +269,13 @@ class Future:
raise exceptions.InvalidStateError(f'{self._state}: {self!r}')
if isinstance(exception, type):
exception = exception()
- if type(exception) is StopIteration:
- raise TypeError("StopIteration interacts badly with generators "
- "and cannot be raised into a Future")
+ if isinstance(exception, StopIteration):
+ new_exc = RuntimeError("StopIteration interacts badly with "
+ "generators and cannot be raised into a "
+ "Future")
+ new_exc.__cause__ = exception
+ new_exc.__context__ = exception
+ exception = new_exc
self._exception = exception
self._exception_tb = exception.__traceback__
self._state = _FINISHED