This is a regression from https://bugs.webkit.org/show_bug.cgi?id=220835. In that change, m_endPromise was saved after the call to WebXRSession::shutdown(InitiatedBySystem::No), but that call could result in WebXRSession::didCompleteShutdown() if the device returns false for supportsSessionShutdownNotification() and m_endPromise would still be null then. Not sure why xrSession_end.https.html did not time out like I've seen with xrSession_requestAnimationFrame_callback_calls.https.html.
Regression point is https://trac.webkit.org/changeset/271988/webkit
Created attachment 418619 [details] Patch
Committed r272014: <https://trac.webkit.org/changeset/272014> All reviewed patches have been landed. Closing bug and clearing flags on attachment 418619 [details].
<rdar://problem/73709519>