If you expect to color your functions async by default, it's really easy to turn a sync functuion into a near-zero-cost async, a Future that has already been resolved at construction time by calling the sync function.
This way, JS / TS becomes pretty comfortable. Except for stacktraces, of course.
Re:Why choose async/await over threads?
by yencabulator on Monday March 25, 2024 @03:36PM
(#39820447)
Except when your sync function calls a function that makes the async runtime deadlock. No, there's no compiler error or lint for that. Good luck!
Useful stacktraces is one of the reasons why I use Go instead of JS/TS on the server-side.
JS has proper async stacktraces as well, or do you mean something else?
You're right. But it was not the case years ago when my team evaluated Go and Node.js. I should have clarified.
> Useful stacktraces is one of the reasons why I use Go
I'm not sure if this is sarcasm or not.
Fair enough. The context is that years ago, my team was evaluating Go and Node.js as options for a server requiring concurrency, and back then Node.js didn't provide any stacktrace for async callbacks. I know it has been improved since then, but I don't use Node.js.
What do you miss in Go's stack traces?
https://journal.stuffwithstuff.com/2015/02/01/what-color-is-...
Unless you are doing high scalability software, async might not be worth of the trade offs.