isn't it usually just function(e){ and then e might have some kind of indicator that it's an error
Usually, when dealing with Javascript, you'll see function (e) { as the signature for DOM function callbacks, where e refers to the event object.
Similarly, `function(err, result)` is nice because HTTP handlers often use `function(req, res)`, where the res is a response object. Fumbling over this kind of thing while nesting async calls in HTTP handlers is a minor annoyance.
You should definitely be using promises. Q is a good library. Don't worry about performance, I can say with extreme confidence that promise execution speed is not your bottleneck. In that 0.01% of times where it is, use Bluebird.