The think I don't like about promises its that you need to write a lot of lines that you could avoid with async/await, i.e:
new Promise(function(success, failure){
db.fetch('sql...', function(err, data){
if (err) failure(err)
else success(data)
})
})
VS var data = await db.fetch('sql...')
Also if you concatenate with then promise.then(function(done, args){
try {
db.fetch('sql...', done)
} catch(e) {}
})
.then(function(done, args){
try {
db.fetch('sql2... {args}', done)
} catch(e) {}
})
.then....
VS try {
var data1 = await db.fetch('sql1...')
var data2 = await db.fetch('sql2... {data1}')
} catch(e) {}
btw its just pseudocode but you get the main idea