A composition-friendly async.js variant