implement SaveAsync for individual executions

SaveAsync() returns a Task that represents the sequential, asynchronous
execution of all pending actions. Each action is executed
asynchronously, one at a time, until all actions are complete or an
action fails. At that point, the returned Task compeletes.