> This code will just ignore the error. While it is expected that the runtime error would float up and terminate the program - that is what runtime errors are made for.
No, this behavior is consistent with how asynchronous programming works in JS.
> That is because browser environment catches all exceptions and displays them in console. So effectively they become handled exceptions.
No, it has nothing to do with the developer console. It has everything to do with the fact that async exceptions do not bubble up in the main execution thread. Promises work the exact same way since they existed as libraries long before they were included in the language. It's about consistency, nothing more, nothing less.
No, this behavior is consistent with how asynchronous programming works in JS.
Nobody would expect that code to terminate a browser tab on error.> This also makes writing tests more difficult because tests often use exceptions to indicate failure.
Then use async functions, problem solved.