Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
add_task(async function test_promiseResolved() {
const { promise, resolve } = Promise.withResolvers();
ok(!(await hasPromiseResolved(promise)));
resolve();
ok(await hasPromiseResolved(promise));
});
add_task(async function test_promiseRejected() {
const { promise, reject } = Promise.withResolvers();
ok(!(await hasPromiseResolved(promise)));
reject(new Error("Some message"));
ok(await hasPromiseResolved(promise));
await Assert.rejects(
promise,
e => e.message == "Some message",
"Caught the expected error"
);
});
add_task(async function test_asyncResolved() {
const { promise, resolve } = Promise.withResolvers();
async function simpleAsyncMethod() {
// Drive this method from the external Promise.
await promise;
}
const onSimpleAsyncMethod = simpleAsyncMethod();
ok(!(await hasPromiseResolved(onSimpleAsyncMethod)));
resolve();
ok(await hasPromiseResolved(onSimpleAsyncMethod));
});
add_task(async function test_asyncRejected() {
const { promise, resolve } = Promise.withResolvers();
// This type of method used to be badly handled by hasPromiseResolved.
async function asyncMethodErroring() {
// Drive this method from the external Promise.
await promise;
throw new Error("Some message");
}
const onAsyncMethodErroring = asyncMethodErroring();
ok(!(await hasPromiseResolved(onAsyncMethodErroring)));
resolve();
ok(await hasPromiseResolved(onAsyncMethodErroring));
await Assert.rejects(
onAsyncMethodErroring,
e => e.message == "Some message",
"Caught the expected error"
);
});