When you're writing in functional style, you'd use arrows, which work nicely both for small lambdas and for writing combinators that can be partially applied. When you're writing in a more procedural style, generators are your "do syntax" equivalent(-ish):
async(function* getCredentialsByToken(token) {
credentials = yield NewCredentials(token)
return User.findByName(credentials.userName)
});
ES6 is a lot more powerful than it looks :)