<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div class="im"><div><br></div></div><div>It is, actually, more simplicity. The concept of `Promise.resolve` and `Promise.chain` is simpler than `Promise.cast` and `Promise.then` (i.e.: they represent orthogonal concepts, not "complected"). `Promise.cast` and `Promise.then` may be, arguably, *easier* to work with, from a user POV, since you don't need to make as many choices. I would argue that it would make more sense to write `cast` and `then` in terms of `resolve` and `chain`, however. But this seems to have already been decided.</div>
</div></div></div></blockquote><div><br></div><div>It does make more sense, and from my point of view it's not decided.  What is decided is the AP2 design.  That is:</div><div><br></div><div>1)  promises are fully parametric and,</div>
<div>2)  `then` recursively unwraps the *input* to its callbacks.</div><div><br></div><div>For the sake of coherency (aka conceptual integrity), `then` needs to be written in terms of `chain`.  This issue needs to be resolved ASAP, however, since promises are making their way into engines now.</div>
<div><br></div></div></div></div>