non-self referencial cyclical promises?

Bergi a.d.bergi at web.de
Wed Feb 24 19:54:01 UTC 2016


Bradley Meck wrote:
> I was doing some recursive data structure work and ended up with a cyclical
> promise that did not use a direct self reference. It can be reduced down to:
>
> ```javascript
> var af, a = new Promise(f=>af=f);
> var bf, b = new Promise(f=>bf=f);
>
> af(b);bf(a); // the problem
>
> a.then(_=>_) // some env/libs need this to start checking status
> ```
>
> According to https://tc39.github.io/ecma262/#sec-promise-resolve-functions
> it looks like this should cause a recursive and infinite set of
> `EnqueueJob("PromiseJobs",...)`

I fear that's what the standard says, yes. The ES6 spec does too many 
(and in some cases, unreasonably many) `then` calls on promises anyway 
to be followed by an efficient promise implementation.

[Promises/A+](https://promisesaplus.com/) in contrast says

| Implementations are encouraged, but not required, to detect such
| recursion and reject promise with an informative TypeError as the
| reason.

Regards,
  Bergi


More information about the es-discuss mailing list