Promise sub-class: super((resolve, reject) => this) ?

Brendan Eich brendan at mozilla.org
Wed Jun 3 02:37:40 UTC 2015


With best intentions I must say that you are overreacting. The 
subject-line code (h/t Mark Miller for pointing me at it!) in context of 
the superclass constructor uses `this` before `super` has returned. 
That's a no-no for pretty-good reason.

If you have a better alternative design, we needed it last month. As 
things stand, this is a thing to learn, with a workaround. What's the 
big deal?

/be


Matthew Robb wrote:
> If I thought I could make any money then I would most definitely bet 
> that the changes made to classes that are at the root of this problem 
> will be the undoing of es classes and I find myself feeling more and 
> more like avoiding them is the easiest thing to do.
>
> This use-case is a perfect example of something that is EXTREMELY 
> unexpected which is funny because the changes are supposed to be 
> supporting subclassing of built-ins.
>
> Very disheartened :(
>
>
> - Matthew Robb
>
> On Tue, Jun 2, 2015 at 6:43 PM, Domenic Denicola <d at domenic.me 
> <mailto:d at domenic.me>> wrote:
>
>     Hmm I am pretty sure Babel et al. are correct here in not allowing
>     this. The super call needs to *finish* before you can use `this`.
>     Chrome also works this way.
>
>     The correct workaround is
>
>     ```js
>     let resolve, reject;
>     super((a, b) => {
>       resolve = a;
>       reject = b;
>     });
>
>     // use this
>     ```
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss


More information about the es-discuss mailing list