template<typename... Ts>
class aria::async::WhenAllAwaiter< Ts >
Awaitable that resolves when ALL input Tasks complete.
Returns std::tuple<T1, T2, ...>.
Race contract: await_suspend publishes parent_->store(caller) (release) BEFORE spawning any driver coroutine. Drivers read parent_->load() (acquire) only after the remaining_ atomic counter hits zero — so a synchronously-completing task that drives remaining_ to zero inside its own start_detached() call still observes the published handle. The handle is held in an atomic (WhenAllParentHandle), so this is TSan-clean and does not depend on statement ordering for correctness; the store-before-spawn ordering is kept only as a performance optimisation (avoids a redundant re-check).