Skip to content

Commit

Permalink
Add PromiseCapability wrapper around sync dispose used in an `await u…
Browse files Browse the repository at this point in the history
…sing` (#218)
  • Loading branch information
rbuckton committed Apr 10, 2024
1 parent 7291299 commit ddd0795
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions spec.emu
Expand Up @@ -1068,9 +1068,12 @@ contributors: Ron Buckton, Ecma International
1. If _method_ is not *undefined*, then
1. Let _closure_ be a new Abstract Closure with no parameters that captures _method_ and performs the following steps when called:
1. Let _O_ be the *this* value.
1. Perform ? Call(_method_, _O_).
1. Return *undefined*.
1. NOTE: This function is not observable to user code. It is used to ensure that a Promise returned from a synchronous `@@dispose` method will not be awaited.
1. Let _promiseCapability_ be ! NewPromiseCapability(%Promise%).
1. Let _result_ be Completion(Call(_method_, _O_)).
1. IfAbruptRejectPromise(_result_, _promiseCapability_).
1. Perform ? Call(_promiseCapability_.[[Resolve]], *undefined*, « *undefined* »).
1. Return _promiseCapability_.[[Promise]].
1. NOTE: This function is not observable to user code. It is used to ensure that a Promise returned from a synchronous `@@dispose` method will not be awaited and that any exception thrown will not be thrown synchronously.
1. Return CreateBuiltinFunction(_closure_, 0, *""*, « »).
1. Else,
1. Let _method_ be ? GetMethod(_V_, @@dispose).
Expand Down

0 comments on commit ddd0795

Please sign in to comment.