// async fibonacci
function async_fib(x) { return spawn(function*() {
throw new Task.Result(
x < 2 ? x
: yield async_fib(x-1) + yield async_fib(x-2));
});}
// with fibers / awaits:
async int async_fib(int x) {
return x < 2 ? x
: await async_fib(x-1) + await async_fib(x-2);
}