<div dir="ltr">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:<div><br></div><div>```javascript</div><div><div>var af, a = new Promise(f=>af=f);</div><div>var bf, b = new Promise(f=>bf=f);</div><div><br></div><div>af(b);bf(a); // the problem</div></div><div><br></div><div>a.then(_=>_) // some env/libs need this to start checking status</div><div>```</div><div><br></div><div>According to¬†<a href="https://tc39.github.io/ecma262/#sec-promise-resolve-functions">https://tc39.github.io/ecma262/#sec-promise-resolve-functions</a> it looks like this should cause a recursive and infinite set of `EnqueueJob("PromiseJobs",...)`</div><div><br></div><div>This code currently does strange things in stable browsers, but doesn't seem to always cause infinite loops in the nightly builds of some things. I was wondering what the expected behavior is here because I am having trouble making sense of things.</div></div>