We had, and still prefer (looking at npm stats) the async module. Eg:
promise.then(function(){}).then(function(){})
is not substantially different than:
async.waterfall([function(){}, function(){}])
Promise advocates kept pretending async didn't exist though, and everybody was using callback hell.