promise-style async sequence flow-control