That's why it's called JavaScript++, it's not backwards compatible and requires a new mental model 😉.
You could be right Eric Kwoka, I'm not familiar with the implementation details. That sounds like an efficiency optimization, though. But conceptually, to cover all the cases in a uniform way, the auto-boxing strategy could work.
(Promises are so cool. Just try Promise.resolve(Promise.resolve(5)) if you don't believe me, lol.)
But actually, I introduced it more as a (valid) concept to bridge us over to the async-by-default model.