Cancelable Promises: Why was this proposal withdrawn?
Promises have always been extremely contentious in JS for a couple reasons and Domenic has had the patience of a saint getting the original proposal through so it&#x27;s totally understandable that he might not want to deal with this anymore especially if people in his org are against it.<p>There were a couple reasons the original promises were so contentious to standardize.<p>- Monads: there was a very vocal faction on TC-39 that really wanted a Promises to be monadic and very much emphasized mathematical purity over usefulness and any attempt to discuss things tended to get side tracked into a discussion about monads, see brouhaha over Promise.cast [1].<p>- Error handling: Promises have a bit of a footgun where by default they can swallow errors unless you explicitly add a listener for them.  As you can theoretically add an error listener latter on all other options had downsides (not always obvious to advocates) leading to a lot of arguing, must of it after things had shipped and realistically couldn&#x27;t be changed.  Fixed by platforms and libraries agreeing on a standardization of uncaught promise events [2].<p>- Just an absurd amount of bike shedding probably the 2nd most bike shedded feature of the spec (behind modules).<p>So cancelable promises reignite all the old debates plus there&#x27;s no obvious right way to do it, like should it be a 3rd state which could cause compatibility issues and would add complexity, or should cancellations just be a sort of forced rejection, which would be a lot more backwards compatibility but with less features.<p>Additionally there is a bizarre meme that somehow observables (think event emitters restricted to a single event or synchronous streams that don&#x27;t handle back pressure) are a replacement for promises or are a better fit for async tasks they should be used instead.<p>edit: patients =&gt; patience<p>1. <a href="https:&#x2F;&#x2F;esdiscuss.org&#x2F;topic&#x2F;promise-cast-and-promise-resolve" rel="nofollow">https:&#x2F;&#x2F;esdiscuss.org&#x2F;topic&#x2F;promise-cast-and-promise-resolve</a><p>2. <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;benjamingr&#x2F;0237932cee84712951a2" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;benjamingr&#x2F;0237932cee84712951a2</a>