Chrome and Safari call this a "resolved" promise, which is true, but kinda misleading…
In this example, p has been resolved, but it's been resolved with a rejected promise, which makes it reject in-turn.
"Resolve" isn't the opposite of "reject". "Fulfill" is the opposite of "reject".

When a promise resolves, it looks at the value its given, and decides what should happen to its state.
In fact, the ECMAScript spec says the values of [[PromiseState]] can only be "pending", "fulfilled", or "rejected". https://www.ecma-international.org/ecma-262/10.0/index.html#table-59

Well done to Firefox for getting this right! Here's the issue for V8 https://bugs.chromium.org/p/v8/issues/detail?id=6751.
Hah, @mathias went and fixed it in Canary 😀 https://twitter.com/mathias/status/1248504856542760960?s=19
You can follow @jaffathecake.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: