> 
> I wasn't aware of this and then read through about a dozen WebAPIs [2] 
> between yesterday and today and... discovered it's the case. In my opinion, 
> one of the most absurd example is the DOMRequest thing which looks like:
> {
>   readonly attribute DOMString readyState; // "processing" or "done"
>   readonly attribute DOMError? error;
>   attribute EventListener      onsuccess;
>   attribute EventListener      onerror;
>   attribute readonly any?      result;
> };
> 
> Read it carefully and you'll realize this is actually a promise... but it has 
> this absurd thing that it has to have both an error and result field while 
> only one is actually field at any given point.
> Also, these APIs and JavaScript as it they are won't support promise 
> chainability and the excellent error forwarding that comes with it 
> off-the-shelf. Also, the lack of a built-in Q.all really doesn't promote good 
> code when it comes to event synchronization.
> Oh yes, of course, you can always build a promise library on top of the 
> current APIs, blablabla... and waste battery with these libraries [3].


Reading the thread again, is this really the primary motivation for adding 
promises? I don't see how the energy issue gets noticeably addressed, and so it 
sounds like, indeed, "you can always build a promise library on top of the 
current APIs." 

There may be real expressive value to a serious promise proposal, however. It 
can enable identifying asynchronous APIs and then 1) allowing frameworks to 
introspect on them and 2) clarifying the succeed/fail protocol. Doing so with 
standard promises seems awkward and insufficient, however, because their use 
only becomes apparent via duck typing: you wrap every API call, intercept the 
return, and check if it was a promise. Supporting introspection *before* the 
call seems more desirable. (So, perhaps, the proposal would be for a special 
async prototype added to any async API call). 

Hopefully there is more discussion going on in backchannels here..

- Leo


_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to