Possessing pawn is unpossessed shortly afterward

Hey all, I’m having an issue with possessing a newly spawned pawn…

So what I’m doing is that at the start of a game I’m spawning a bunch of pawns for each player, but since players may have different pawns means that I’m not using the default pawn setting in the game mode, instead in the GameMode using the OnLogin method, I check which pawn needs to be spawned, spawn it and give it to the player for possession.

At first, this all works perfectly, each player receives their pawn and takes control, but when I call ResetGame on the GameMode after the end of a round and all the current pawns are successfully destroyed by the base method, I then respawn each players pawn and give them possession again for the new round, but this is where things get weird… The first player who joined, PlayerController0, will have their pawn created, will possess it, and I can see by calling the GetControlledPawn on the player controller that they have control of the new pawn, and calling GetOwner on the new pawn shows PlayerController0 is the owner, but by the time the game calls BeginPlay on the pawn, the PlayerController0 is no longer the owner of the pawn, when I call GetOwner in the BeginPlay method of the pawn it returns None, and the player is in possession of nothing - instead just having their camera at origin with no movement etc.

The rest of the players though all work, they successfully possess their new pawns and can play on, just the first player remains with no controlled pawn…

This is the function which creates the pawn and allows the player to possess it, it’s pretty straightforward…

Any ideas about what could be happening? Maybe it’s a timing thing since it’s only happening to the first player perhaps - ResetGame is still running something in the background maybe?