Effection Logo

Blog

Tutorials, announcements, and insights about structured concurrency

Latest

Effection Blog AbortController.abort() Doesn't Mean It Stopped AbortController AbortController tick: STILL RUNNING tick: STILL RUNNING tick: STILL RUNNING >>> calling abort() >>> abort() returned task ended with: aborted >>> caller thinks it's done tick: STILL RUNNING tick: STILL RUNNING tick: STILL RUNNING tick: STILL RUNNING tick: STILL RUNNING ... keeps running Structured Concurrency Structured Concurrency tick: RUNNING tick: RUNNING tick: RUNNING >>> leaving scope >>> scope exited all children stopped cleanup is automatic
New

AbortController.abort() Doesn't Mean It Stopped

abort() fires an event and returns immediately, but cleanup depends on every function honoring the signal. Structured concurrency inverts the default: scope owns lifetime, cleanup is automatic.

Taras Mankovski's profile

Taras Mankovski

February 13, 2026

All Posts

Effection Blog Why JavaScript Needs Structured Concurrency Scope owns lifetime. Cleanup is guaranteed. Promises async fn() fetch() setTimeout() server.listen() ● still pending ● still ticking ● port still bound finally {} ? Effection function*() function*() spawned task fetch() setTimeout() server.listen() scope ends ✓ halted + cleaned up Async should just feel normal.

Why JavaScript Needs Structured Concurrency

Structured programming tamed the chaos of early computing. Structured concurrency does the same for async — and Effection brings it to JavaScript.

Taras Mankovski's profile

Taras Mankovski

February 6, 2026

Effection

Welcome to the Effection Blog

Introducing the new Effection blog - your source for tutorials, release announcements, and insights about structured concurrency in JavaScript.

Taras Mankovski's profile

Taras Mankovski

February 2, 2025