Chris Thoburn
banner
runspired.com
Chris Thoburn
@runspired.com
📍Oakland, CA, North Mexico

Husband |🦮parent | ⛰️Trail Runner | OSS Software Engineer working on @emberjs.com and @warp-drive.io

👨🏼‍💻Senior Staff Engineer at AuditBoard, Ex @linkedin.com IsleOfCode
What kinds of talks do they like? Need to start proposing WarpDrive talks and been looking for good conferences to pitch to.
November 6, 2025 at 11:01 PM
A lot folks conflate these two rules it seems - in no small part due to the poor name choice (it makes sense if you know what it does, but the name could mean the same as no-floating-promises which is what most seem to think it does)
November 3, 2025 at 8:32 PM
Nope! That’s a great rule. It forces you to be explicit about intent (with use of void)

the rule being discussed is require-await which says you cannot use the keyword async to make a function or method async when it could otherwise be sync
November 3, 2025 at 8:31 PM
Don live in LA but I have been to dodger stadium: it’s amazing. Missed opportunity with the parking lots but it’s such a uniquely positioned stadium - reminiscent of Greek and Roman stadia.
November 3, 2025 at 5:10 PM
No. That’s a great rule. Marking with void when it’s intentional is lovely. I’m talking about require-await which bans “async function foo() { return “bar”; }” for lack of using await in the body
November 3, 2025 at 12:20 AM
You also raise the odds of a fetch-like conundrum with errr handling where some errors are thrown sync and some thrown async by the same function, leading to double catch wrappers in promise chains
November 2, 2025 at 9:26 PM
when you ban async, all you do is raise the odds that someone does Promise.resolve(fn()) or worse
November 2, 2025 at 9:25 PM
Right. Which is to say the project also wishes to ban

- Promise.try(fn)
- Promise.resolve().then(fn)
- new Promise(resolve => resolve(fn()))

Which are all common patterns cleaned up by and made far safer by just using async as it was intended
November 2, 2025 at 9:22 PM
Banning B is the entirety of the problem
November 2, 2025 at 9:19 PM
And it causes a ton of confusion because folks think it’s protecting them from some form of mistake but it’s not: bsky.app/profile/mast...
Yup, this one has hit me a bunch of times and each time I end up wasting an hour just trying to understand WTF it is preventing only to realize it thinks I’m a moron. Well eslint can kiss my ass!
November 2, 2025 at 9:17 PM
Reposted by Chris Thoburn
Yup, this one has hit me a bunch of times and each time I end up wasting an hour just trying to understand WTF it is preventing only to realize it thinks I’m a moron. Well eslint can kiss my ass!
November 1, 2025 at 11:43 PM
this rule doesn’t ask folks to make APIs sync - because when folks use async they are already saying they don’t want a sync API - it asks you to fight the linter every time by either writing it in a more brittle or verbose manner or by adding an ignore.
November 2, 2025 at 9:16 PM
The argument that this rule is “simplifying code” is just incorrect, perhaps even absurd. The rule exists purely because a few folks in the project appear to consider async programming to be a code smell, which it is not unless you’re react which is its own lang and should maintain its own rules
November 2, 2025 at 9:13 PM
require-yield is also a suspicious rule imo but it is hit less often because “I want a step function that immediately finalizes” is a less common case due to lack of adoption of generators than “I want a promise” as promises are commonplace.
November 2, 2025 at 9:10 PM
They also think they are paying taxes - due to the withholding for SS/Medicare on their paystubs when they do work - and think they are entitled to their parents SS checks because that money was stolen from their taxes.
November 2, 2025 at 6:58 AM
That's honestly like using JavaScript and claiming you've never heard of TypeScript.
November 2, 2025 at 6:28 AM
TBH I think TC39 needs to go. As a model it feels like it’s failed, something like PHP or Rust’s governance would be better.
November 1, 2025 at 3:04 AM
the language just needs to follow suite with other languages and build tooling, types and linting in.
November 1, 2025 at 3:03 AM