Repository navigation
Closed
Labels
parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystemCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
Description
Current state — 38 failing. Snapshot from the 2026-06-29 full sweep (perry 0.5.1208, node v26.3.0). Supersedes the original body; the complete current failing-test list is inline below — no re-run needed to start.
Promise.all/allSettled capability records with a custom/subclassed constructor + then-iteration ordering. (Real class X extends Promise subclass support is the largest remaining piece.)
Failure reasons
| n | reason |
|---|---|
| 5 | TypeError: Bind must be called on a function |
| 4 | (no output) |
| 3 | TypeError: Promise resolve or reject function is not callable |
| 3 | Test262:AsyncTestFailure:Test262Error: Test262Error: Expected SameValu |
| 3 | Uncaught exception: Expected a Test262Error to be thrown but no except |
| 3 | Uncaught exception: Expected a TypeError to be thrown but no exception |
| 2 | Perry ran clean; Node rejected (missed negative) |
| 2 | TypeError: value is not a function |
| 1 | Test262:AsyncTestFailure:Test262Error: The promise should be rejected, |
| 1 | Uncaught exception: symbol Expected SameValue(«0», «1») to be true |
| 1 | Uncaught exception: null Expected a TypeError to be thrown but no exce |
| 1 | Uncaught exception: Expected the 'finally' method on a Promise to be ' |
All 38 failing tests (path — reason)
full list — click to expand
built-ins/Promise/all/ctx-ctor.js TypeError: Promise resolve or reject function is not callable
built-ins/Promise/all/does-not-invoke-array-setters.js Perry ran clean; Node rejected (missed negative)
built-ins/Promise/all/invoke-resolve-on-promises-every-iteration-of-custom.js TypeError: Bind must be called on a function
built-ins/Promise/allSettled/ctx-ctor.js TypeError: Promise resolve or reject function is not callable
built-ins/Promise/allSettled/does-not-invoke-array-setters.js Perry ran clean; Node rejected (missed negative)
built-ins/Promise/allSettled/invoke-resolve-on-promises-every-iteration-of-custom.js TypeError: Bind must be called on a function
built-ins/Promise/allSettled/iter-arg-is-poisoned.js Test262:AsyncTestFailure:Test262Error: The promise should be rejected, but was resolved
built-ins/Promise/any/invoke-resolve-on-promises-every-iteration-of-custom.js TypeError: Bind must be called on a function
built-ins/Promise/any/invoke-resolve-on-values-every-iteration-of-custom.js TypeError: Bind must be called on a function
built-ins/Promise/any/iter-arg-is-poisoned.js Test262:AsyncTestFailure:Test262Error: Test262Error: Expected SameValue(«AggregateError»,
built-ins/Promise/prototype/catch/this-value-obj-coercible.js Uncaught exception: symbol Expected SameValue(«0», «1») to be true
built-ins/Promise/prototype/catch/this-value-then-not-callable.js Uncaught exception: null Expected a TypeError to be thrown but no exception was thrown at
built-ins/Promise/prototype/finally/is-a-method.js Uncaught exception: Expected the `finally` method on a Promise to be `Promise.prototype.fi
built-ins/Promise/prototype/finally/rejected-observable-then-calls-PromiseResolve.js (no output)
built-ins/Promise/prototype/finally/rejected-observable-then-calls.js Test262:AsyncTestFailure:Test262Error: Test262Error: Expected SameValue(«3», «5») to be tr
built-ins/Promise/prototype/finally/resolved-observable-then-calls-PromiseResolve.js (no output)
built-ins/Promise/prototype/finally/resolved-observable-then-calls.js Test262:AsyncTestFailure:Test262Error: Test262Error: Expected SameValue(«3», «5») to be tr
built-ins/Promise/prototype/finally/species-constructor.js TypeError: value is not a function
built-ins/Promise/prototype/finally/subclass-reject-count.js (no output)
built-ins/Promise/prototype/finally/subclass-resolve-count.js (no output)
built-ins/Promise/prototype/finally/this-value-proxy.js TypeError: Promise.prototype.finally called on non-object
built-ins/Promise/prototype/finally/this-value-then-not-callable.js Uncaught exception: undefined Expected a TypeError to be thrown but no exception was throw
built-ins/Promise/prototype/finally/this-value-then-poisoned.js Uncaught exception: Expected a Test262Error to be thrown but no exception was thrown at al
built-ins/Promise/prototype/finally/this-value-then-throws.js Uncaught exception: Expected a Test262Error to be thrown but no exception was thrown at al
built-ins/Promise/prototype/then/S25.4.5.3_A2.1_T1.js Uncaught exception: Expected a TypeError to be thrown but no exception was thrown at all
built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T1.js Test262:AsyncTestFailure:TypeError: value is not a function
built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T2.js Test262:AsyncTestFailure:Test262Error: Test262Error: The value of result is expected to eq
built-ins/Promise/prototype/then/capability-executor-called-twice.js TypeError: value is not a function
built-ins/Promise/prototype/then/capability-executor-not-callable.js Uncaught exception: executor not called at all Expected SameValue(«""», «"a"») to be true
built-ins/Promise/prototype/then/ctor-access-count.js Test262:AsyncTestFailure:Test262Error: Expected constructor access count: 1. Actual: 0
built-ins/Promise/prototype/then/ctor-null.js Uncaught exception: Expected a TypeError to be thrown but no exception was thrown at all
built-ins/Promise/prototype/then/ctor-poisoned.js Uncaught exception: Expected a Test262Error to be thrown but no exception was thrown at al
built-ins/Promise/prototype/then/deferred-is-resolved-value.js Uncaught exception: then() returns object Expected SameValue(«1», «[object Object]») to be
built-ins/Promise/race/ctx-ctor.js TypeError: Promise resolve or reject function is not callable
built-ins/Promise/race/invoke-resolve-on-promises-every-iteration-of-custom.js TypeError: Bind must be called on a function
built-ins/Promise/resolve/ctx-ctor.js TypeError: Promise.resolve called on non-object
built-ins/Promise/resolve/resolve-prms-cstm-then.js Uncaught exception: Expected SameValue(«undefined», «[object Object]») to be true
built-ins/Promise/undefined-newtarget.js Uncaught exception: Expected a TypeError to be thrown but no exception was thrown at all
Reproduce
scripts/test262_subset.py --root vendor/test262 --dir built-ins/Promise --jobs 6
Each path is under vendor/test262/test/; assemble harness + case per test-compat/test262/README.md to run one under perry compile.
Metadata
Metadata
Assignees
Labels
parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystemCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
Activity
[-]test262 built-ins/Promise (60) — resolve/reject callability, Promise.all/allSettled context, then-iteration[/-][+]test262 built-ins/Promise — 58 fails (all/allSettled capability + then-iteration)[/+]proggeramlug commentedon Jun 28, 2026
Cloud worker → PR #5748 (code-only, perry-runtime, +45/-3). Fixed the custom-
thensubcluster — a native Promise carrying a user-defined ownthenwas ignored in (1) method-call dispatch (then/catch/finallywere excluded from the own-expando override check, so combinators routed to the intrinsicjs_promise_then) and (2)promise_resolve_assimilating(native fast-path bypassed the specGet(resolution,"then")). built-ins/Promise 58 → 42 (+16), zero regressions. Remaining 42 are chiefly Promise-subclass support (class X extends Promise—super(executor)is a no-op today; drivesctx-ctor,subclass-*-countfinally, and theSubclass.resolve.bind"Bind must be called on a function" cases) +prototype/finally/this-value-*andthen/ctor-*validation.fix(runtime): #5590 — non-callable own `then` resolves with the value…
refactor(runtime): #5590 — split thenable assimilation out of promise…
lint: allowlist relocated GcHeader probe in promise/assimilate.rs (#5590
fix(runtime): #5590 — honor user-defined own `then` on a Promise (com…
[-]test262 built-ins/Promise — 58 fails (all/allSettled capability + then-iteration)[/-][+]test262 built-ins/Promise — 42 fails (all/allSettled capability + then-iteration)[/+][-]test262 built-ins/Promise — 42 fails (all/allSettled capability + then-iteration)[/-][+]test262 built-ins/Promise — 38 fails (all/allSettled capability + then-iteration)[/+]fix(runtime): #5590 — Promise.prototype.then/catch/finally spec compl…
proggeramlug commentedon Jul 1, 2026
Superseded by self-contained per-area worklist tickets — each has the complete current failing-test list inline (2026-07-01 sweep), so an agent can open one and work immediately (no history, no re-measure):
#5832 language/class · #5833 language-misc · #5834 built-ins-misc · #5835 intl-small · #5836 RegExp · #5837 NumberFormat · #5838 Array · #5839 Temporal · #5840 DateTimeFormat · #5841 eval-code · #5842 Object · #5843 String · #5844 Proxy · #5845 intl402-misc · #5846 Function · #5847 JSON · #5848 annexB-misc · #5849 Promise.