<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
</head>
<body>
<div>
<div style="font-size:11pt; font-family:Calibri,sans-serif">I fall mostly under the "native futures should not implicitly chain library futures" camp. Its easy enough to write:<br>
<br>
var p = // some thenable<br>
return new Future(resolver => p.then(resolver.resolve, resolver.reject);<br>
<br>
One thing that I find a bit icky is that implicitly attaching to "then" not only is not a guarantee (is it really a "thennable"), but it also leaks a new thenable that may take up more memory and processing time due to possible scheduling of results/errors
 to the chained (and unused) thenable. It would be slightly better to hook "done" rather than "then". Depending on the various implementations, duck type checking for both "then" and "done" might be slightly more reliable than just looking for "then" and would
 let us hook "done" to reduce overhead.<br>
<br>
If library authors subclass Future, the @class symbol could be easily checked in Future#resolve to chain appropriately, though the Future superclass might need  to be able to construct a new instance of the subclass for calls to Future#then, otherwise you loose
 the capabilities of the subclass after the first call to Future#then.<br>
<br>
Library authors that do not subclass Future could add something like .asFuture() to their prototype (or use a predefined symbol), just as one might to support iterators.
<br>
<br>
Alternatively, ES might also need to expose a FutureFactory that can be used to create instances of a Future subclass. If that were the case, the Future constructor could take in an optional FutureFactory subclass that is used to construct library subclasses
 of Future.<br>
<br>
Ron<br>
<br>
Sent from my Windows Phone</div>
</div>
<div dir="ltr">
<hr>
<span style="font-size:11pt; font-family:Calibri,sans-serif; font-weight:bold">From:
</span><span style="font-size:11pt; font-family:Calibri,sans-serif"><a href="mailto:zenparsing@gmail.com">Kevin Smith</a></span><br>
<span style="font-size:11pt; font-family:Calibri,sans-serif; font-weight:bold">Sent:
</span><span style="font-size:11pt; font-family:Calibri,sans-serif">4/22/2013 10:54 AM</span><br>
<span style="font-size:11pt; font-family:Calibri,sans-serif; font-weight:bold">To:
</span><span style="font-size:11pt; font-family:Calibri,sans-serif"><a href="mailto:dean@deanlandolt.com">Dean Landolt</a></span><br>
<span style="font-size:11pt; font-family:Calibri,sans-serif; font-weight:bold">Cc:
</span><span style="font-size:11pt; font-family:Calibri,sans-serif"><a href="mailto:brendan@mozilla.com">Brendan Eich</a>;
<a href="mailto:erights@google.com">Mark S. Miller</a>; <a href="mailto:douglas@crockford.com">
Douglas Crockford</a>; <a href="mailto:public-script-coord@w3.org">public-script-coord@w3.org</a>;
<a href="mailto:w3@norbertlindenberg.com">Norbert Lindenberg</a>; <a href="mailto:markus.lanthaler@gmx.net">
Markus Lanthaler</a>; <a href="mailto:es-discuss@mozilla.org">es-discuss</a></span><br>
<span style="font-size:11pt; font-family:Calibri,sans-serif; font-weight:bold">Subject:
</span><span style="font-size:11pt; font-family:Calibri,sans-serif">Re: Futures</span><br>
<br>
</div>
<div>
<div dir="ltr"><br>
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div>I would love to see this, but best I can tell it can't be a straitforward polyfill. The necessary infrastructure has to settle, and what are Promises/A+ implementers supposed to do in the meantime?<br>
</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div style="">Presumably the standard version of Future would provide some convenient way to get the symbol.  The library would use that to conditionally provide the symbol-named alias.  Something along these lines:</div>
<div style=""><br>
</div>
<div style="">    if (typeof Future !== "undefined")</div>
<div style="">        MyPromise.prototype[Future.thenSymbol] = MyPromise.prototype.then;</div>
<div style=""><br>
</div>
<div style="">No?</div>
<div style=""><br>
</div>
<div style="">{ Kevin }</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</body>
</html>