I'm working on a little party system but got stuck a bit with the player following system. Now I could be wrong with the issue but, what I believe is causing the issue, is that when the player leaves the game try's to pull everyone that is in their party to their server but because they haven't loaded into the actual game yet they cannot follow them. (and so are teleported to the same server) How would I have the players in the party wait for the party host to be in the game server? Here is a full set of source code attached to a portal object.

local TeleportService = game:GetService("TeleportService")
local levelId = 1370155526
 
function onTouched(hit)
    local player = game.Players:GetPlayerFromCharacter(hit.Parent)
    if player then		
		local inParty = player.inParty.value
		local isHost = player.isHosting.value		
		if(inParty)then
			if(not isHost)then
				print("Only the party leader can join a game.")
				return
			end
		end
		player.Character.Humanoid.WalkSpeed = 0
		game.Workspace.Map.Soundz.Bell:Play()
		TeleportService:Teleport(levelId, player)
	end		
end




game.Players.PlayerRemoving:connect(function(player)
	wait(5)
	print("oi")
    for _, player2 in pairs(game.Players:GetPlayers()) do
		if(player2.followPlayer.Value == player.Name)then
			followPlayer(player2, player.UserId)
		end
	end
end)

function followPlayer(player, targetUserId)
    local success, errorMsg, placeId, instanceId = TeleportService:GetPlayerPlaceInstanceAsync(targetUserId)
    if success then
        TeleportService:TeleportToPlaceInstance(placeId, instanceId, player)
    else
        print("Teleport error:", errorMsg)
    end
end

script.Parent.Touched:connect(onTouched)

the followPlayer , isHosting, and playerFollow values are created inside another script, these are just to keep track of what party you are in and are edited by an outside source. This is purely just for the teleportation script.