Adding back the waitUntilScheduled introduced a regression with this sync switch behavior. Because we block on all previous cmd buffer submission, if the sync switch fires partially through the raster thread workload, then some of our cmd buffers won't be submitted and waitUntilScheduled won't terminate.
But since we added back the waitUntilScheduled, we don't actually need these guards, as this ensures that the raster thread doesn't finish until all worker threads have finished.