Workflow engine based on async.js