What is an Async?
Async are just promises that are executed lazily.
A promise wraps a piece of asynchronous code and resolves the value from the code when it's done.
Here is what a promise would look like.
new Promise(promiseExecutor)
.then(successHandler)
.catch(errorHandler)
.finally(cleanupHandler);
And in Async.apex:
new Async(new CustomAsyncExecutor())
.then(new SuccessHandler())
.error(new ErrorHandler())
.done(new CleanupHandler())
.fork();