Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PromiseCapability wrapper around sync dispose used in an await using #218

Merged
merged 2 commits into from Apr 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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