from stdint import * import stdio import coro class MyError(Exception): pass async def leaf(x: int) -> int: return x + 1 async def boom() -> int: raise MyError("boom msg") return 0 async def task() -> int: fin: int = 0 try: fin = 1 await boom() finally: fin = fin + 1 stdio.printf("finally ran, fin = %d\n", fin) return 99 def main() -> int: n: int = 0 for i in range(3): tt: coro.Coroutine = coro.Coroutine(*&task()) r: int = coro.coro_run(tt) e: int = coro.coro_exception(tt) m: t.CPtr = coro.coro_exception_msg(tt) stdio.printf("[%d] r = %d, exc = %d, msg = %s\n", i, r, e, m) coro.coro_destroy(tt) n = n + 1 return 0