Why synchronous loading flush async loading

//
// Begin loading packages.
//warning: Objects may not be destroyed between BeginLoad/EndLoad calls.
//
void BeginLoad()
{
auto& ThreadContext = FUObjectThreadContext::Get();
if (ThreadContext.ObjBeginLoadCount == 0 && !IsInAsyncLoadingThread())
{
// Make sure we’re finishing up all pending async loads, and trigger texture streaming next tick if necessary.
FlushAsyncLoading();

		// Validate clean load state.
		check(ThreadContext.ObjLoaded.Num() == 0);
	}

	++ThreadContext.ObjBeginLoadCount;
}

In the function BeginLoad, unreal will flush aync loading when this is invoked by synchronous loading request(staticloadobject). But why? Can someone help me to explain it? For a example?

What’s more, it just flush the time-sliced async loading, not threaded aync loading.

Many thanks!

1 Like