diff --git a/dbus_next/message_bus.py b/dbus_next/message_bus.py index 8bb830d..39ed85d 100644 --- a/dbus_next/message_bus.py +++ b/dbus_next/message_bus.py @@ -14,8 +14,8 @@ import logging import xml.etree.ElementTree as ET import traceback - -from typing import Type, Callable, Optional, Union +import asyncio +from typing import Type, Callable, Optional, Union, Coroutine class BaseMessageBus: @@ -665,8 +665,10 @@ def _process_message(self, msg): for handler in self._user_message_handlers: try: - result = handler(msg) - if result: + result = handler(msg) + if isinstance(result, Coroutine): + asyncio.create_task(result) + elif result: if type(result) is Message: self.send(result) handled = True