Long Sync Task
This task blocks the UI. Notice the button state freezes. This is not an acceptable user experience.
Long Async Task (no Promise)
This task does not block the UI, but our progress bar reports immediately that it's complete even though it's not.
Long Async Task (using a Promise)
Now with promises we can not only wait until the task is done to update our progress, but we can update it along the way as progress is reported.