|
3961 | 3961 | </ul></div><div id="menu-toggle"><svg xmlns="http://www.w3.org/2000/svg" style="width:100%; height:100%; stroke:currentColor" viewBox="0 0 120 120" width="54" height="54"> |
3962 | 3962 | <title>Menu</title> |
3963 | 3963 | <path stroke-width="10" stroke-linecap="round" d="M30,60 h60 M30,30 m0,5 h60 M30,90 m0,-5 h60"></path> |
3964 | | - </svg></div><div id="menu-spacer" class="menu-spacer"></div><div id="menu"><div id="menu-search"><input type="text" id="menu-search-box" placeholder="Search..."><div id="menu-search-results" class="inactive"></div></div><div id="menu-pins"><div class="menu-pane-header">Pins<button class="unpin-all">clear</button></div><ul id="menu-pins-list"></ul></div><div class="menu-pane-header">Table of Contents</div><div id="menu-toc"><ol class="toc"><li><span class="item-toggle">+</span><a href="#sec-safe-resolve-promise" title="MaybeDeferredPromiseResolve Abstract Operations"><span class="secnum">1</span> MaybeDeferredPromiseResolve Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-isgetterdescriptor" title="IsGetterDescriptor ( Desc )"><span class="secnum">1.1</span> IsGetterDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-has-property-which-could-run-user-code" title="HasPropertyWhichCouldRunUserCode ( o, propertyKey )"><span class="secnum">1.2</span> HasPropertyWhichCouldRunUserCode ( <var>o</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-requires-deferred-promise-resolution" title="RequiresDeferredPromiseResolution ( value )"><span class="secnum">1.3</span> RequiresDeferredPromiseResolution ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-perform-promise-resolution" title="PerformPromiseResolution ( promise, resolution, called )"><span class="secnum">1.4</span> PerformPromiseResolution ( <var>promise</var>, <var>resolution</var>, <var>called</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-newpromiseresolvethenablejob" title="NewPromiseResolveThenableJob ( promiseToResolve, thenable, then )"><span class="secnum">1.5</span> NewPromiseResolveThenableJob ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-perform-promise-resolve-thenable" title="PerformPromiseResolveThenable ( promiseToResolve, thenable, then )"><span class="secnum">1.6</span> PerformPromiseResolveThenable ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createresolvingfunctions-modified" title="CreateResolvingFunctions ( toResolve )"><span class="secnum">1.7</span> CreateResolvingFunctions ( <var>toResolve</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-maybe-deferred-promise-resolve" title="MaybeDeferredPromiseResolve ( promiseCapability, resolution )"><span class="secnum">1.8</span> MaybeDeferredPromiseResolve ( <var>promiseCapability</var>, <var>resolution</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-copyright-and-software-license" title="Copyright & Software License">Copyright & Software License</a></li></ol></div></div><div id="spec-container"><h1 class="version">Stage 1 Draft / May 6, 2026</h1><h1 class="title">MaybeDeferredPromiseResolve (name TBD)</h1> |
| 3964 | + </svg></div><div id="menu-spacer" class="menu-spacer"></div><div id="menu"><div id="menu-search"><input type="text" id="menu-search-box" placeholder="Search..."><div id="menu-search-results" class="inactive"></div></div><div id="menu-pins"><div class="menu-pane-header">Pins<button class="unpin-all">clear</button></div><ul id="menu-pins-list"></ul></div><div class="menu-pane-header">Table of Contents</div><div id="menu-toc"><ol class="toc"><li><span class="item-toggle">+</span><a href="#sec-safe-resolve-promise" title="MaybeDeferredPromiseResolve Abstract Operations"><span class="secnum">1</span> MaybeDeferredPromiseResolve Abstract Operations</a><ol class="toc"><li><span class="item-toggle-none"></span><a href="#sec-isgetterdescriptor" title="IsGetterDescriptor ( Desc )"><span class="secnum">1.1</span> IsGetterDescriptor ( <var>Desc</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-has-property-which-could-run-user-code" title="HasPropertyWhichCouldRunUserCode ( o, propertyKey )"><span class="secnum">1.2</span> HasPropertyWhichCouldRunUserCode ( <var>o</var>, <var>propertyKey</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-requires-deferred-promise-resolution" title="RequiresDeferredPromiseResolution ( value )"><span class="secnum">1.3</span> RequiresDeferredPromiseResolution ( <var>value</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-perform-promise-resolution" title="PerformPromiseResolution ( promise, resolution, called )"><span class="secnum">1.4</span> PerformPromiseResolution ( <var>promise</var>, <var>resolution</var>, <var>called</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-newpromiseresolvethenablejob" title="NewPromiseResolveThenableJob ( promiseToResolve, thenable, then )"><span class="secnum">1.5</span> NewPromiseResolveThenableJob ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-perform-promise-resolve-thenable" title="PerformPromiseResolveThenable ( promiseToResolve, thenable, then )"><span class="secnum">1.6</span> PerformPromiseResolveThenable ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-createresolvingfunctions-modified" title="CreateResolvingFunctions ( toResolve )"><span class="secnum">1.7</span> CreateResolvingFunctions ( <var>toResolve</var> )</a></li><li><span class="item-toggle-none"></span><a href="#sec-maybe-deferred-promise-resolve" title="MaybeDeferredPromiseResolve ( promiseCapability, resolution )"><span class="secnum">1.8</span> MaybeDeferredPromiseResolve ( <var>promiseCapability</var>, <var>resolution</var> )</a></li></ol></li><li><span class="item-toggle-none"></span><a href="#sec-copyright-and-software-license" title="Copyright & Software License">Copyright & Software License</a></li></ol></div></div><div id="spec-container"><h1 class="version">Stage 1 Draft / May 20, 2026</h1><h1 class="title">MaybeDeferredPromiseResolve (name TBD)</h1> |
3965 | 3965 |
|
3966 | 3966 | <emu-note> |
3967 | 3967 | This spec text is not reviewed yet and may have issues. |
@@ -4013,8 +4013,8 @@ <h1><span class="secnum">1.5</span> NewPromiseResolveThenableJob ( <var>promiseT |
4013 | 4013 |
|
4014 | 4014 | <emu-clause id="sec-perform-promise-resolve-thenable" type="abstract operation" aoid="PerformPromiseResolveThenable"> |
4015 | 4015 | <h1><span class="secnum">1.6</span> PerformPromiseResolveThenable ( <var>promiseToResolve</var>, <var>thenable</var>, <var>then</var> )</h1> |
4016 | | - <p>The abstract operation PerformPromiseResolveThenable takes arguments <var>promiseToResolve</var> (a Promise), <var>thenable</var> (an Object), and <var>then</var> (a <emu-xref href="#sec-jobcallback-records"><a href="https://tc39.es/ecma262/#sec-jobcallback-records">JobCallback Record</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">normal completion containing</a></emu-xref> <emu-val>undefined</emu-val> or a <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">throw completion</a></emu-xref>. It performs the following steps when called:</p> |
4017 | | - <emu-alg><ol><li>Let <var>resolvingFunctions</var> be <emu-xref aoid="CreateResolvingFunctions" id="_ref_8"><a href="#sec-createresolvingfunctions-modified">CreateResolvingFunctions</a></emu-xref>(<var>promiseToResolve</var>).</li><li>Let <var>thenCallResult</var> be <emu-xref aoid="Completion"><a href="https://tc39.es/ecma262/#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="HostCallJobCallback"><a href="https://tc39.es/ecma262/#sec-hostcalljobcallback">HostCallJobCallback</a></emu-xref>(<var>then</var>, <var>thenable</var>, « <var>resolvingFunctions</var>.<var class="field">[[Resolve]]</var>, <var>resolvingFunctions</var>.<var class="field">[[Reject]]</var> »)).</li><li>If <var>thenCallResult</var> is an <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, then<ol><li>Return ? <emu-xref aoid="Call"><a href="https://tc39.es/ecma262/#sec-call">Call</a></emu-xref>(<var>resolvingFunctions</var>.<var class="field">[[Reject]]</var>, <emu-val>undefined</emu-val>, « <var>thenCallResult</var>.<var class="field">[[Value]]</var> »).</li></ol></li><li>Return ! <var>thenCallResult</var>.</li></ol></emu-alg> |
| 4016 | + <p>The abstract operation PerformPromiseResolveThenable takes arguments <var>promiseToResolve</var> (a Promise), <var>thenable</var> (an Object), and <var>then</var> (a <emu-xref href="#sec-jobcallback-records"><a href="https://tc39.es/ecma262/#sec-jobcallback-records">JobCallback Record</a></emu-xref> or a <emu-xref href="#function-object"><a href="https://tc39.es/ecma262/#function-object">function object</a></emu-xref>) and returns either a <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">normal completion containing</a></emu-xref> <emu-val>undefined</emu-val> or a <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">throw completion</a></emu-xref>. It performs the following steps when called:</p> |
| 4017 | + <emu-alg><ol><li>Let <var>resolvingFunctions</var> be <emu-xref aoid="CreateResolvingFunctions" id="_ref_8"><a href="#sec-createresolvingfunctions-modified">CreateResolvingFunctions</a></emu-xref>(<var>promiseToResolve</var>).</li><li>If <var>then</var> is a <emu-xref href="#function-object"><a href="https://tc39.es/ecma262/#function-object">function object</a></emu-xref>, then<ol><li>Let <var>thenCallResult</var> be <emu-xref aoid="Completion"><a href="https://tc39.es/ecma262/#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="Call"><a href="https://tc39.es/ecma262/#sec-call">Call</a></emu-xref>(<var>then</var>, <var>thenable</var>, « <var>resolvingFunctions</var>.<var class="field">[[Resolve]]</var>, <var>resolvingFunctions</var>.<var class="field">[[Reject]]</var> »)).</li></ol></li><li>Else,<ol><li>Let <var>thenCallResult</var> be <emu-xref aoid="Completion"><a href="https://tc39.es/ecma262/#sec-completion-ao">Completion</a></emu-xref>(<emu-xref aoid="HostCallJobCallback"><a href="https://tc39.es/ecma262/#sec-hostcalljobcallback">HostCallJobCallback</a></emu-xref>(<var>then</var>, <var>thenable</var>, « <var>resolvingFunctions</var>.<var class="field">[[Resolve]]</var>, <var>resolvingFunctions</var>.<var class="field">[[Reject]]</var> »)).</li></ol></li><li>If <var>thenCallResult</var> is an <emu-xref href="#sec-completion-record-specification-type"><a href="https://tc39.es/ecma262/#sec-completion-record-specification-type">abrupt completion</a></emu-xref>, then<ol><li>Return ? <emu-xref aoid="Call"><a href="https://tc39.es/ecma262/#sec-call">Call</a></emu-xref>(<var>resolvingFunctions</var>.<var class="field">[[Reject]]</var>, <emu-val>undefined</emu-val>, « <var>thenCallResult</var>.<var class="field">[[Value]]</var> »).</li></ol></li><li>Return ! <var>thenCallResult</var>.</li></ol></emu-alg> |
4018 | 4018 | </emu-clause> |
4019 | 4019 |
|
4020 | 4020 | <emu-clause id="sec-createresolvingfunctions-modified" type="abstract operation" aoid="CreateResolvingFunctions"> |
|
0 commit comments