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
