<story><title>How do Promises Work?</title><url>http://robotlolita.me/2015/11/15/how-do-promises-work.html</url></story><parent_chain></parent_chain><comment><author>wonnage</author><text>&amp;gt; Another way of solving this problem comes from the realisation that we only really need to keep track of the dependencies for a promise while the promise is in the pending state, because once a promise is fulfilled we can just execute the function right away!&lt;p&gt;This is a common gotcha in Javascript implementations, in that you think you want this, but you really don&amp;#x27;t! Now you never know if your code is synchronous or will run in a subsequent tick. Your call tree will look completely different depending on race conditions...&lt;p&gt;This comes up in user code as well; any time you write a function that takes a callback, it&amp;#x27;s probably a good idea to either always run it either in the same call tree or in a new stack, but never mix the two. It&amp;#x27;s usually easier to just do the latter using process.nextTick.</text></comment>
<story><title>How do Promises Work?</title><url>http://robotlolita.me/2015/11/15/how-do-promises-work.html</url></story><parent_chain></parent_chain><comment><author>hvmonk</author><text>I have seen how Promises&amp;#x27; concept was abused in a project at work. All the promises were just returning Future objects, and they were exposed everywhere. And, in case a future fails for some reason, there was no way to have a new Future: all users were doing future.get, resulting in an exception thrown to the caller. 
What a mess.</text></comment>