Do you deploy Launch asynchronously or synchronously? It sounds like you are running into a race condition where the Launch rule executes before the data layer is ready.
Ideally, your data layer code is populated in the <head>, above the Launch script. If that's not feasible and your data layer code is written in the <body> below your Launch script, you need to fire your page view rule at least "DOM Ready".
