Until recently, I was primarily a JS and Node developer, recently switching primarily to Python. Python has a similar feature in 3.5 (async/await) and while I used to think it was a little confusing and it forced me to think about the event loop (because when you call an asynchronous function, it doesn't execute until it's called as a future in a loop or in another async function), it seems very well designed compared to this.
In Python, I can't accidentally call an async function without thinking of how it relates to other code, whereas in JS it is a Promise that executes synchronously and returns asynchronously, which means it opens you up to more tricky issues down the road.
The more I've worked with Python, the more I appreciate and respect how well designed it is. I don't have the same appreciation for JS (and yes, I know about how it was originally designed in 10 days, but that was 20 years ago) (and yes, I also was able to skip a lot of the Python 2 vs 3 issue having started recently, but I recognize it was a huge issue in the recent past).
In Python, I can't accidentally call an async function without thinking of how it relates to other code, whereas in JS it is a Promise that executes synchronously and returns asynchronously, which means it opens you up to more tricky issues down the road.
The more I've worked with Python, the more I appreciate and respect how well designed it is. I don't have the same appreciation for JS (and yes, I know about how it was originally designed in 10 days, but that was 20 years ago) (and yes, I also was able to skip a lot of the Python 2 vs 3 issue having started recently, but I recognize it was a huge issue in the recent past).