<p dir="ltr">Also, making promise resolution idempotent makes dealing with things way easier. Similarly, most deferred libraries ensure their resolution is idempotent. </p>
<br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 28, 2017, 13:20 Tab Atkins Jr. <<a href="mailto:jackalmage@gmail.com">jackalmage@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Feb 28, 2017 at 10:12 AM, /#!/JoePea <<a href="mailto:joe@trusktr.io" class="gmail_msg" target="_blank">joe@trusktr.io</a>> wrote:<br class="gmail_msg">
> f.e.<br class="gmail_msg">
><br class="gmail_msg">
> ```js<br class="gmail_msg">
> let resolve<br class="gmail_msg">
> let p = new Promise(r => resolve = r)<br class="gmail_msg">
><br class="gmail_msg">
> resolve(5) //  resolves the promise.<br class="gmail_msg">
> resolve(4) // noop (in Chrome), but why not throw an error?<br class="gmail_msg">
> ```<br class="gmail_msg">
><br class="gmail_msg">
> I only tested in Chrome, and I'm assuming it follows spec, but I could be<br class="gmail_msg">
> wrong.<br class="gmail_msg">
><br class="gmail_msg">
> I'm asking because it seems that throwing an error will prevent shots in the<br class="gmail_msg">
> foot, so that code doesn't assume that resolving on an already resolved<br class="gmail_msg">
> Promise worked, although it didn't. It seems like it can lead to unexpected<br class="gmail_msg">
> failures.<br class="gmail_msg">
<br class="gmail_msg">
That's correct behavior, yes.  In general, it's because the internal<br class="gmail_msg">
state of a promise is meant to be unobservable unless you're<br class="gmail_msg">
specifically listening to it.<br class="gmail_msg">
<br class="gmail_msg">
~TJ<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
es-discuss mailing list<br class="gmail_msg">
<a href="mailto:es-discuss@mozilla.org" class="gmail_msg" target="_blank">es-discuss@mozilla.org</a><br class="gmail_msg">
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br class="gmail_msg">
</blockquote></div>