Isn't there a simple way to determine when level streaming is finished?

It’s all random.
I bring my character into a World Composite level by spawning an actor on a position. the open world system then starts to stream in that level. Sometimes it works, sometimes the character spawns before the level is loaded and then falls into the bottomless pit while the level materializes above it. I tried FlushLevelStream but it doesn’t really seem to work. It’s certainly not a blocking synchronization point.
I have been looking into a way to receive an event in the level BP for instance when the level is done, but to no avail. I can’t even say in which level the character materializes since I don’t have a list of level positions so that I could compare the character’s spawning point with a list of level BoundingBoxes or so.
Isn’t there a reliable way to either wait until all levels are streamed in or at least get an event each time a level is done streaming?

Thanks, I wasn’t too keen on polling plus I would love to have the name detected automatically but apparently that’s not possible either, so I will go with this solution. better than nothing at all

Try this, it works on my side:

protected:
	UFUNCTION() void OnStreamLevelLoaded();

	enum EActionId
	{
		AID_Loading,
	};

	enum ELinkID
	{
		LID_Link
	};
...
        FLatentActionInfo LatentActionInfo;
		LatentActionInfo.UUID = AID_Loading;
		LatentActionInfo.CallbackTarget = this;
		LatentActionInfo.Linkage = LID_Link; // have to be not equal to INDEX_NONE, and probably should be void* to ExecutionFunction bindable params
		LatentActionInfo.ExecutionFunction = FName(TEXT("OnStreamLevelLoaded"));
		
		UGameplayStatics::LoadStreamLevel(GetWorld(), EnvironmentMap, true, true, LatentActionInfo);