In this lesson, we learn that navigating programmatically is an asynchronous operation. By waiting for the result, we can detect navigation failures and perform all sorts of custom actions based on the reason for failure.