Currently, there is nothing in place to ensure an async function ever completes. Simplest example:
@async function foo() {
}
This will generate something along the lines of:
function foo() return Future.async(function (__return) {})
There should be something to prevent that from happening.