- From: David Bruant <bruant.d@gmail.com>
- Date: Fri, 26 Apr 2013 22:33:35 +0200
- To: Domenic Denicola <domenic@domenicdenicola.com>
- CC: Rick Waldron <waldron.rick@gmail.com>, "public-script-coord@w3.org" <public-script-coord@w3.org>, es-discuss <es-discuss@mozilla.org>
Le 26/04/2013 21:47, Domenic Denicola a écrit : > From: David Bruant [bruant.d@gmail.com] >> Which naturally leads to the question: why should platform promises be compatible with Promise/A+ and not jQuery "promises"? Because more libraries use Promise/A+? what about market share? I realize I was playing the douchebag devil advocate here and I apologize for that. The point I was trying to make is that there is no reason for the platform to follow a standard more than another. PromiseA+ has some user base and benefits, but jQuery has a much more massive user base and it would make sense for the platform to follow that. There are probably a bunch of other de facto standard here and there. Why should platform promises be more interoperable with promiseA+ and not any other (de facto) standard? > What we're discussing is not *compatibility* but *ability to assimilate*. I confused both as "having some level of interoperability". > Assimilating thenables requires no particular spec compliance or library compatibility. Promises/A+ (in the 1.1 version) gives a step-by-step procedure for doing so that is quite resilient in the face of edge cases, and so I'd recommend it for any assimilation semantics, but that's not terribly relevant to the question of whether there should be assimilation semantics *at all*. As is, the algorithm is unacceptable as it unconditionally calls the then method of a thenable potentially resulting in unintended side-effects if the thenable wasn't intended to be a promise but a non-promise value. I believe "does this object has a 'then' method?" is too weak of a heuristic for a web platform convention. Trying an idea: Step 2.3 of the Promise Resolution Procedure, instead of just "if then is a function", what about "if then is a function *and* has a property named '__IAmAPromiseA+Thenable__' which value is true, call it... "? I don't think it would be possible (you'll tell me soon enough I imagine), but that would be better. Although this sounds crazier, it's a much better way to express the intent that such then function is a thenable and I wouldn't be opposed to this test even baked in the platform as it dramatically reduces the risk of confusion. David
Received on Friday, 26 April 2013 20:34:06 UTC