Player Respawning at the Wrong SpawnLocation?

When the player joins I am setting their spawn location and respawning them, but they still spawn at the original one.

When I print the assigned spawn location, it’s correct. This happens because I do it too early. When I add a 1 second wait, it spawns at the right location, but why doesn’t it work without the wait?

--    This doesn't work unless I add a wait(1). Is there a way to fix this?
    local spawnLocation = spawnLocations[1]
    spawnLocation.Enabled = true
    specificPlr.RespawnLocation = spawnLocation
    specificPlr:LoadCharacter()
    spawnLocation.Enabled = false

Where are you adding the wait(1) for it to work?

As @Chrofex requested we really need to know where the wait is to understand more. My current thoughts are that you are doing this after the character loads which means the spawn has already been selected. If you do it as the player is joining, there should be no need to respawn the character.