Compared to using promises directly, not only can async and await make code more readable for developers — they enable some interesting optimizations in JavaScript engines, too! This write-up is about one such optimization involving stack traces for asynchronous code. The fundamental difference between await and vanilla promises is that await X() suspends execution of the current function, while p