https://typescripttolua.github.io/play/#code/5.4/FAGwpgLgBADgTgewLYEsDOYBKYBWYDGEAXFAIYB2AnlALxQCu5AJmAGYrlhMDcwpalcviitGhFAnJQAKmDQQATAAoAlFADewKNqj5J82IlQZaUTgHcoABSPowSpXDkIQANzAAaKE7yE1NAD4NLR1Q+GQ7bF9oOh8CCF5QgF8VRJ0nCHo4KXDjMF4k4D4BIRExCAkpWXkARlVg0Ig4ak1Q0NJzUhRoasVVNO0k3VIIfAALKCUwNVa27XgOCCUAInwR8eWVELm9cgNSUw6u6BsIjAA6JzQXdyUm+mmBtoXyJeXSZa9SVKgAel+zGB3HBDIsAIRkCAQMBIGDQCAIKCUFBgEBMERGKAIegQNAoFhkXQIRA4jhgbZQIbscikEAgFoUsJwRYram0+mbRk6Xb7Q6dbrWWwXK43ez3R5c+bM14rD5fH7-QHA0GvCEjaGw+GI5Go9GsTHY3H4sCEvQkiqcCmFQrAXp1LYoViTXKRXDxGYUl0YKLxVTAQpAA We can use `await` in async `catch` block, but when execute to this `catch` block, the program may not in `coroutine` but in `main` lua thread. Maybe we should fix it in this way? ```typescript export function __TS__Await(this: void, thing: unknown) { if (!coroutine.running()) { return thing; } return coyield(thing); } ```