The other problem I see here is that starting and awaiting the task are too coupled.
In JavaScript calling the function would start the task, and awaiting the result would wait for it. This lets you do several things concurrently.
How would you do this in Dada:
const doThings = async () => {
const [one, two, three] = await Promise.all([
doThingOne(),
doThingTwo(),
doThingThree(),
]);
};
And if you wanted to return a thunk to delay starting the work, you would just do that yourself.