Kotlin's coroutines are more powerful than TypeScript's async/await for asynchronous programming. Coroutines are more general and can be used with other patterns besides just asynchronous code. In KotlinJS, coroutines work easily with Promises. They allow suspending functions without needing to explicitly "await", and can be applied to other patterns beyond just async code. Kotlin's coroutines are therefore superior to TypeScript's async/await for asynchronous programming in JavaScript.