AsyncTask to load meshes crashing game

I am trying to spawn multiple actors at runtime and load meshes (uassets) from the content folder. I started to look at AsyncTask to do the job but I am struggling to get it to work. Any help would be greatly appreciated. This is the object class:

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStaticMeshLoaded, UStaticMesh*, mesh);


UCLASS()
class AALTERMODULAR_API AOSMAsyncMeshObj : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AOSMAsyncMeshObj();



public:	


	UPROPERTY(EditAnywhere)
		USceneComponent* Root;

	UPROPERTY(EditAnywhere)
		UStaticMeshComponent* Mesh;


	UFUNCTION()
		void Initialise(FString MeshPath);

	UFUNCTION()
		void SetObjMesh(UStaticMesh* mesh_);

And .cpp:

void AOSMAsyncMeshObj::Initialise(FString MeshPath)
{
	FOnStaticMeshLoaded OnMeshLoaded;
	OnMeshLoaded.AddDynamic(this, &AOSMAsyncMeshObj::SetObjMesh);


	AsyncTask(ENamedThreads::AnyHiPriThreadHiPriTask, [OnMeshLoaded]()
		{
			TArray<UStaticMesh*> directoryMeshes = UaUtilities::GetMeshesFromDirectory("Assets/TwinmotionReadyposed/PosedHumans/meshes");
			int32 index = FMath::RandRange((int32)0, (int32)directoryMeshes.Num() - 1);
			OnMeshLoaded.Broadcast(directoryMeshes[index]);
		});
}


void AOSMAsyncMeshObj::SetObjMesh(UStaticMesh* mesh_)
{
	Mesh->SetStaticMesh(mesh_);
}

Currently the game is crashing with the following error:

Assertion failed: IsInGameThread() [File:D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 1549] Unable to load /Game/Assets/TwinmotionReadyposed/PosedHumans/meshes/SM_Child01. Objects and Packages can only be loaded from the game thread.

How to get asynchronous logic out of the GameThread then?

TLDR: you can’t. UObjects don’t allow this. You will have to do this on the game thread instead / hack it somehow