I believe depth should be ```None``` to force it to load the whole tree or do you really only want the top 3 (4?) levels? If you only want the top levels, then you'll need to pass depth to the recursive _xmodule_json to keep it from forcing any layers deeper than 3 from loading.
{code: python}
        depth (int): An argument that some module stores may use to prefetch
            descendents of the queried modules for more efficient results later
            in the request. The depth is counted in the number of
            calls to get_children() to cache. None indicates to cache all descendents.
{code}