The quiet problem with unnecessary async

“The quiet problem with unnecessary async”. Code: async getConfig, then without. “Keep APIs honest. Instead of designing around what a function might someday become, design around what it is today”.

Matt Smith warns that marking a function async when it does no real asynchronous work changes its contract and forces every caller to handle Promises. async tends to propagate outward through call chains, adds cognitive overhead, and hides where real I/O actually happens. He recommends keeping synchronous functions synchronous and reaching for async only when real asynchronous work arrives.

allthingssmitty.com/2026/06/08/the-quiet-problem-with-unnecessary-async