Why JavaScript is broken: Effect and TypeScript

Michael argues that Promise and async/await divide synchronous from asynchronous code while leaving errors, cancellation, and resource cleanup difficult to compose. 07:43 10:10

He describes Effect as a lazy computation: work described now and executed later, with typed errors and requirements. He distinguishes failures a program handles from defects it lets escape. 11:05 12:32 23:38

Sources

  1. Why JavaScript is Broken: How Effect and TypeScript Fixes It (w/ Michael Arnaldi) - YouTube. Michael Arnaldi. Recording; used for composable errors, dependencies, and resource cleanup. Accessed 2026-10-01.

Last changed 2026-10-07 in f1a00f2. Source on GitHub. Change log.

Linked from

  1. Agent guide. An Effect stack so pure (aspirational) Kit Langton will blush.
    Link context

    Why JavaScript is broken: Effect and TypeScript — Michael Arnaldi argues that production JavaScript needs one composable model for errors, dependencies, and cleanup.

  2. Change log. What changed in the files served here, newest first.

    Why JavaScript is broken: Effect and TypeScript — edited: feat(learn): teach cards 83 to 111 and finish the deck’s plain lines

  3. Full agent guide. An Effect stack so pure (aspirational) Kit Langton will blush.
  4. Rat Stack lore | rat-stack. Short, source-grounded notes on the ideas and decisions behind rat-stack.
    Link context

    Why JavaScript is broken: Effect and TypeScript — Michael Arnaldi argues that production JavaScript needs one composable model for errors, dependencies, and cleanup.

  5. Source change history (log.md). The generated change log as Markdown.

    Why JavaScript is broken: Effect and TypeScript — edited: feat(learn): teach cards 83 to 111 and finish the deck’s plain lines