What Async Promised and What it Delivered — Causality
The async/await saga is a story where each chapter solves the previous chapter's worst problem while introducing new structural costs. The sequential syntax that made async code readable also obscures the thing that matters: which operations actually depend on each other.
April 2026 What Async Promised and What it Delivered Each wave fixed the last wave's worst problem and introduced a new one. OS threads carry overhead: an operating system thread reserves virtual address space for its stack and takes on the order of tens of microseconds to create on modern Linux. (edit Apr 27: The original “roughly a millisecond”, and “megabyte of stack space” conflated virtual reservation with physical memory commitment. Thanks to ibraheemdev, jemfinch, eklitzke on HN) Context switches happen in kernel space and burn CPU cycles, and O(n) readiness polling (select, poll) add u
saved by
related reading
- Reading 15: Promisesweb.mit.edu
- A Design Space Exploration of Async/Awaitcel.cs.brown.edu
- (Quite) A Few Words About Asyncyoric.github.io
- Let futures be futureswithout.boats
- TypeScript Structured Concurrencythecandidstartup.org
- Why choose async/await over threads? | Hacker Newsnews.ycombinator.com
- Why async Rust?without.boats
- Async Rust Is A Bad Languagebitbashing.io
- Reading 16: Mutual Exclusionweb.mit.edu
- What Color is Your Function? - journal.stuffwithstuff.comjournal.stuffwithstuff.com
- Notes on structured concurrency, or: Go statement considered harmful - njs blogvorpus.org
- Microtasks and event looptr.javascript.info