async 関数の呼び出しに伴い作成される asyncContext に対する操作がセットになっている。
src: https://tc39.es/ecma262/#sec-runtime-semantics-evaluateasyncfunctionbody
async 関数の実行においては、
src: https://tc39.es/ecma262/#await
NewPromiseCapability
引数: コンストラクタ
返り値: PromiseCapability Record
処理: new して、その際に resolve, reject を取り出して、それらをまとめて capability record へまとめて return
PerformPromiseThen
引数: (promise, onfulfill, onreject, resultCapability?)
capability がない場合があり、 await 式の場合が該当する。
PromiseResolve
Promise.resolve の処理そのもの。 引数が Promise だったならばそのまま返し、 そうでなければ NewPromiseCapability して、即座に resolve を呼び、その promise を return
Promise.prototype.then
ざっくり、 NewPromiseCapability して PerformPromiseThen (this, arg1, arg2, capability) する。