The current algorithm for XR animation frame will always result in an abort on step 5 unless I'm missing something.
Step 5 aborts is the base layer of the active render state is null which is the default value. The base layer of the active render state is only set when the pending state is applied. However that step is the last step of the XR animation frame algorithm, meaning that it won't ever be executed because we're early returning before on step 5.
I've checked for example Chromium's implementation and they're running the apply very early just after receiving frame data.