- From: Brendan Eich <brendan@secure.meer.net>
- Date: Thu, 05 Sep 2013 19:58:54 -0700
- To: public-script-coord@w3.org
Let's put done back in. It's the right thing.
/be
> Boris Zbarsky <mailto:bzbarsky@MIT.EDU>
> September 5, 2013 7:55 PM
>
>
> Also fwiw, likewise. The clearly spells out the "if I don't get to
> here, something went wrong and I want to know what" bits....
>
> -Boris
>
> Mark Miller <mailto:erights@gmail.com>
> September 5, 2013 10:15 AM
> On Thu, Sep 5, 2013 at 12:04 PM, Domenic Denicola
> <domenic@domenicdenicola.com <mailto:domenic@domenicdenicola.com>> wrote:
>
> From: Kevin Smith [zenparsing@gmail.com <mailto:zenparsing@gmail.com>]
>
> > Indeed, for a non-GUI embedding like Node, they *must* be
> debuggable using just a console.
>
> This is an important point. A provisional idea that preserves our
> desire to not introduce new features to promises themselves,
> requiring user choice at authoring time, might be some kind of
> `console.unhandledRejections()` function which returns you a
> snapshot of the current unhandled rejections bucket.
>
>
> That would be a global communications channel.
>
>
> > Another option is a static method which takes a promise and
> throws rejections ala done:
> >
> > ```js
> > Promise.throw(makeSomePromise.then(...));
> > ```
>
> I find these kind of things confusing. RSVP did something similar,
> introducing
>
> ```js
> RSVP.rethrow = r => setImmediate(() => throw r);
> ```
>
> so that you write
>
> ```js
> somePromise.then(...).catch(RSVP.rethrow); // actually RSVP uses
> `fail`.
> ```
>
> It's not clear to me why this, or your `Promise.throw`, is better than
>
> ```js
> somePromise.done(...)
> // or
> somePromise.then(...).done()
> ```
>
>
> As I said, I think we will eventually add something that provides this
> or similar functionality. But it does not need to be added to the
> subset this repository seeks to define -- for the immediate needs of
> DOM. Since the topic of this thread is "final steps", I'm just trying
> to be clear in this context that this .done-ish issue is after these
> "final steps".
>
> This is the kind of issue that is best decided after more experience
> with several of these debugging aids, in both browser and server. So
> we should of course continue to discuss these options on es-discuss
> regarding ES7. Also, we won't have Weak References until ES7, and that
> bears on this discussion and expected experience. FWIW, so far, I
> still like .done better than the suggested alternatives.
>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org <mailto:es-discuss@mozilla.org>
> https://mail.mozilla.org/listinfo/es-discuss
>
>
>
>
> --
> Text by me above is hereby placed in the public domain
>
> Cheers,
> --MarkM
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
> Domenic Denicola <mailto:domenic@domenicdenicola.com>
> September 5, 2013 9:04 AM
> From: Kevin Smith [zenparsing@gmail.com]
>
>> Indeed, for a non-GUI embedding like Node, they *must* be debuggable using just a console.
>
> This is an important point. A provisional idea that preserves our desire to not introduce new features to promises themselves, requiring user choice at authoring time, might be some kind of `console.unhandledRejections()` function which returns you a snapshot of the current unhandled rejections bucket.
>
>> Another option is a static method which takes a promise and throws rejections ala done:
>>
>> ```js
>> Promise.throw(makeSomePromise.then(...));
>> ```
>
> I find these kind of things confusing. RSVP did something similar, introducing
>
> ```js
> RSVP.rethrow = r => setImmediate(() => throw r);
> ```
>
> so that you write
>
> ```js
> somePromise.then(...).catch(RSVP.rethrow); // actually RSVP uses `fail`.
> ```
>
> It's not clear to me why this, or your `Promise.throw`, is better than
>
> ```js
> somePromise.done(...)
> // or
> somePromise.then(...).done()
> ```
>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
> Kevin Smith <mailto:zenparsing@gmail.com>
> September 5, 2013 7:10 AM
> Hi Kris,
>
> Thanks for the details! This gives us an idea what a "promise
> monitoring" feature might look like in a browser's developer tools. I
> think such a feature would be really cool, but I believe that
> promise-using programs ought to be debuggable using just a console.
> Indeed, for a non-GUI embedding like Node, they *must* be debuggable
> using just a console.
>
> I don't think we should ship an API that is not debuggable using a
> console. However, I'm *not* in favor of a `done` method on the Promise
> prototype because of functional overlap with `then`.
>
> Another option is a static method which takes a promise and throws
> rejections ala done:
>
> Promise.throw(makeSomePromise.then(...));
>
> Personally, I consider it a shame that promise libraries punted on the
> distinction between rejections and program errors, but I suppose it's
> too late to go there.
>
> { Kevin }
>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
> Kris Kowal <mailto:kris.kowal@cixar.com>
> September 4, 2013 12:15 PM
> My colleagues and I are working on an extension for Chrome Web
> Inspector that can communicate with promise libraries, particularly Q,
> over the window message port. The tool, which will be renamed and
> rewritten before it is ready for general use, adds a Promises tab to
> Web Inspector that shows all currently pending and unhandled
> asynchronous errors, as well as stack traces for both, and also
> progress information, albeit determinate, indeterminate, or
> indeterminate but lively. There is a video accompanying for demonstration.
>
> https://github.com/montagejs/continuum
>
> https://www.dropbox.com/s/2h68ax9j5mj7i6c/continuum.mov
>
> The promise client broadcasts when a promise is deferred, when a
> deferred promise is resolved, when a deferred promise makes progress
> (through the `deferred.notify` interface), when a fulfilled promise is
> created, when a rejected promise is created, and when a rejection is
> handled. As such, the inspector can reconstruct whatever portion of
> the program’s promise history it elects to retain.
>
> In time, I intend to formalize a protocol. Ideally this system would
> be useful for both “primordial” and library promises, and combinations
> of both. Of course, any assistance would be valuable.
>
> Also, ideally this would approach the functionality available to
> Causeway and perhaps even *become* a manifestation of Causeway.
>
> https://code.google.com/p/causeway/wiki/CausewayIntroduction
>
> It would certainly be possible to show promises in multiple contexts,
> including cross-origin iframes, and even show time sequence / Stevens
> graphs for message passing between promises in multiple JavaScript
> contexts, when promises are used as proxies for remote objects through
> a facility like Q-Connection
>
> https://github.com/kriskowal/q-connection
>
> Kris Kowal
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
Received on Friday, 6 September 2013 02:59:24 UTC