LoadLevelAsync not async

Our game has a quick-to-load scene as the very first scene in the game, but the second scene (the StartMenu) takes like 20 seconds to load on an iPad 4 or iPad Air. So in the first scene I start out by loading the StartMenu using LoadLevelAsync while the first scene does its thing, but it’s not working - the screen remains black from the initial game load, and after something like 20 seconds the StartMenu shows up.

function LoadLevel()
{
    levelLoader = Application.LoadLevelAsync("StartMenu");
    levelLoader.allowSceneActivation = false;
    while (levelLoader.progress < 0.9f)
    {
        Debug.Log("Loading Progress " + (levelLoader.progress*100) + "%");
        yield;
    }
    Debug.Log("--== Fully Loaded ==--");
    levelLoader.allowSceneActivation = true;
}

Does anybody have any ideas what is going wrong? (yes, this current code is set to allow activating the moment it hits 90%, but as the full load takes 20 seconds, there should be plenty of time to see things going on in the first scene)

Edit: This is Unity 4.6.7p1

I guess it’s working, but it sure seems to be reaching 90% complete really fast compared to how long it takes to completely load the scene. I completed the code, so that allowSceneActivation isn’t set to true until the rest of the scene is done doing stuff, and from that I can see if seems to work, though it still takes a few seconds to load from that point.

Edit: well, “Working” - I put a timer in to time it, Unity thinks it is 90% done loading the level in 3.45 seconds, then it takes 20 seconds to finish loading the scene after that. Something there seems wrong to me…

So, as far as I can figure, the Async functions don’t work on iOS with large scenes. After 90%, it blocks execution of everything else to finish loading the level no matter what I do. Both LoadLevelAsync and LoadLevelAdditiveAsync, doesn’t matter.