However, no:
a1.send()
does not start execution of an async function a1.send
, it just returns a future (if Motoko works the same as most asynchronous languages).
So, in
let p1 = a1.send();
let p2 = a2.send();
let r1 = await p1;
let r2 = await p2;
execution of a2
starts only after execution of a1
finishes.