I have wasted hours understanding the subtlety of promises chaining. I think its worth sharing.
The article is available on my blog
If you don't have it ready install coffee script:
npm install -g coffee-script
Then in the project folder:
npm install
To check what can be confusing look at the file and call them through:
coffee expected.coffee
coffee whatididntexpected.coffee