Effection Logo

Blog

Tutorials, announcements, and insights about structured concurrency

Latest

Effection Blog Missing Structured Concurrency Guarantees in Sobek — k6's JavaScript Runtime Async/Await group: coolgroup group: (lost) c.add(1) tagged ✓ http.asyncRequest("GET", url) group() saves current tags group() exits → tags cleared! .then(() => c.add(1)) not tagged ✗ Callback runs after group exited Metric missing the group tag Structured Concurrency group: coolgroup group: (done) c.add(1) tagged ✓ yield* until(http.asyncRequest(...)) c.add(1) still tagged ✓ scope waits for async to complete scope exits → tags cleared Async completes before scope exits All metrics properly tagged
New

The missing structured concurrency guarantees in k6's JavaScript runtime

Why groups/tags, errors, and cleanup drift across async boundaries in k6 scripts, and how @effectionx/k6 demonstrates a structured fix.

Taras Mankovski's profile

Taras Mankovski

February 15, 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