From e59df8476ea5ca1564c811a58bfff43d38a5931e Mon Sep 17 00:00:00 2001 From: Moishe Lettvin Date: Fri, 8 Mar 2024 15:02:15 -0500 Subject: [PATCH] Wait for the callback's result, so exceptions get raised --- src/dailyai/services/daily_transport_service.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dailyai/services/daily_transport_service.py b/src/dailyai/services/daily_transport_service.py index 868c296b2..d29695ef0 100644 --- a/src/dailyai/services/daily_transport_service.py +++ b/src/dailyai/services/daily_transport_service.py @@ -81,7 +81,10 @@ class DailyTransportService(BaseTransportService, EventHandler): for handler in self._event_handlers[event_name]: if inspect.iscoroutinefunction(handler): if self._loop: - asyncio.run_coroutine_threadsafe(handler(*args, **kwargs), self._loop) + future = asyncio.run_coroutine_threadsafe(handler(*args, **kwargs), self._loop) + + # wait for the coroutine to finish. This will also raise any exceptions raised by the coroutine. + future.result() else: raise Exception( "No event loop to run coroutine. In order to use async event handlers, you must run the DailyTransportService in an asyncio event loop.")