Why might you choose to make your code asynchronous?
to ensure that the call stack maintains a LIFO (Last in, First Out) structure
to make your code faster
to ensure that tasks further down in your code are not initiated until earlier tasks have completed
to start tasks that might take some time without blocking subsequent tasks from executing immediately