import asyncio from typing import Awaitable, Callable from core.logger import get_logger logger = get_logger("core.error_handler") def capture_errors(handler: Callable[..., Awaitable[None]]) -> Callable[..., Awaitable[None]]: async def wrapper(*args, **kwargs) -> None: try: await handler(*args, **kwargs) except asyncio.CancelledError: raise except Exception: logger.exception("Unhandled exception in handler") return wrapper