What Async Promised and What it Delivered
Summary
The article traces the evolution from callbacks to promises to async/await, detailing the benefits and hidden costs at each wave, including control-flow inversion, one-shot semantics, and function coloring. It argues that while these abstractions improve ergonomics for sequential async code, they introduce ecosystem fragmentation and cognitive load when scaling concurrent systems, and it highlights patterns for parallelism and practical design trade-offs.