On 18 Dec 2013 20:27, "Ѓорѓи Ќосев" <gorgi.ko...@gmail.com> wrote:
>
> On 12/19/2013 02:56 AM, Alex Russell wrote:
>>
>> On Wed, Dec 18, 2013 at 3:32 PM, Ѓорѓи Ќосев <gorgi.ko...@gmail.com>
wrote:
>>>
>>> I understand that adding branding to promises is impossible at this
>>> point, as it would break backward compatibility with all existing
>>> implementations.
>>
>>
>> That wasn't the overriding consdieration. I don't care if we don't have
a-priori compatibility. The bigger issue is the lack of symbol
infrastructure in the language and the inability to polyfill if we do. I've
long argued for "ghetto branding" (something less foot-gun-ish than an
extractable then callable), but in the interest of harmony, was not willing
to fight for the better design at the end.
>>
> This doesn't need symbols at all, and it could be considered a "bugfix"
addition - there is still time for those, I believe?
>
> It would make `.then` in the method name position less of a language
keyword. Without breaking compatibility with existing implementations. It
will also pave the path towards a future where most implementations inherit
from built in promises and those that don't set their
`prototype.__notPromise__ = false`,
>
> If (and when) such a future arrives, the switch can be potentially
flipped to assume `true` instead of `false`, thereby essentially removing
the quirk from the language - completely.
>
>
> > Our primary goal here needs to be shipping something ASAP. All other
concerns are, in the scheme of things, irrelevant.'
> >
> > We're already half a year late on this.
>
> Should the language really ban all objects from using `.then`, forever?
Should it force library authors to face the decision:
>
> - my objects remain incompatible with promises (cannot be returned by
them), or
> - rename `.then` method, do a massive refactor, also force all my users
to do a massive refactor
>
> Why not provide a harmless third option?
>
> - add __notPromise__ flag to my prototype to tell promises not to
assimilate these objects

That's an inverse form of "ghetto branding". But it doesn't matter either.
The only thing that does is having *one*, *standard* contract -- and we are
past due on that.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to