Building Async Page Transitions in Vanilla JavaScript