I currently use use callbacks and caolan/async on node.js, using in-place callbacks where simple and async methods where things get complex. It's been working very well so far, and it avoids my biggest issue with promises, which is that it seems I'd need all the modules I want to use to support promises, which they surely don't, and mixing two styles seems worse than picking a poison.
Maybe someone can show me why my reasoning is flawed, though.
var b = require('bluebird'), request = b.promisify(require('request'));
request(...).then(...)
These libraries also have utilities for controlling callback flow -- e.g calling several promises in parallel, which is done in the article with jQuery's $.when, waiting until a certain number finish, etcWhen I used promises for real in a section of my code processing data:
1) I found it hard to use mostly because of all the work I had to do to "lift" non promise code up into promises, before I could use them.
2) When chaining them, it wasn't clear how you would handle a "fan-out", where a piece of data generated an array, which you then had to process with callbacks.
3) Unless I inserted a fail() after every then(), it was hard to tell where exactly in the chain something failed, and the stack trace wasn't very helpful.
I suspect maybe I'm doing something wrong--that even though you can chain promises sequentially, you generally want to make functions using promises, that you can then chain? I still haven't seen well written promise code. Anyone got examples other than toy examples?
And you can always use something like bluebird's promisify if you're combining promises with existing callback code.
Just wait until the JavaScript developers learn about continuations!