Async Javascript Sugar

> Async/Await (modern JS sugar for async)

async function main() { console.log("A"); await new Promise(resolve => setTimeout(resolve, 1000)); console.log("B"); } main();

digraph AsyncAwaitExecution { rankdir=TB; node [shape=box, style=filled, fontname=Helvetica]; CallStack [label="Call Stack", fillcolor=lightblue]; MicrotaskQueue [label="Microtask Queue\n(Promises)", fillcolor=khaki]; EventLoop [label="Event Loop", shape=ellipse, style=solid]; A [label="console.log('A')"]; Await [label="await fetch(...)"]; Suspend [label="execution suspended"]; Resume [label="resume async fn → console.log('C')"]; CallStack -> A; A -> Await; Await -> Suspend [label="Promise pending", style=dashed]; Suspend -> MicrotaskQueue [label="Promise resolved"]; MicrotaskQueue -> Resume; EventLoop -> Resume [label="after stack clear"]; CallStack -> EventLoop; }

This **looks** synchronous but is **asynchronous** underneath. It’s JavaScript’s way of making async look more like your familiar synchronous LiveCode scripts.

# See