Add warnings.
Optimize BasicPromise.flush
Make otherwise public.
Comment.
Optmimze imports.
Update docs.
Handle async finallies.
style cleanup.
Correctly pass through exceptions.
No point in creating extra async instances
Separate asyncMain.
Just use the existing async function.
Update docs.