public IEnumerator UnloadWhenEntityDestroyedBeforeFinishing()
    {
        GameObject meshRootGameObject = new GameObject();

        string url = TestAssetsUtils.GetPath() + "/GLB/Trunk/Trunk.glb";

        IDCLEntity entity = Substitute.For <IDCLEntity>();

        entity.meshRootGameObject.Returns(meshRootGameObject);

        LoadWrapper_GLTF wrapper = Substitute.ForPartsOf <LoadWrapper_GLTF>();

        wrapper.entity = entity;
        wrapper.customContentProvider = new ContentProvider();

        bool loaded   = false;
        bool failed   = false;
        bool unloaded = false;

        wrapper.WhenForAnyArgs(x => x.Unload()).Do((info) => unloaded = true);

        wrapper.Load(url, loadWrapper => loaded = true, loadWrapper => failed = true);

        entity.OnCleanupEvent?.Invoke(entity);

        yield return(new WaitUntil(() => loaded || failed || unloaded));

        Object.Destroy(meshRootGameObject);

        Assert.IsTrue(unloaded, "Unload should be called if entity is cleaned up while loading mesh");
    }