I have been trying to do a matchmaking system where you enter your friends room code to play with them.

Here's my broken code:

local replicatedStorage = game:GetService("ReplicatedStorage")
local teleportService = game:GetService("TeleportService")
local dataStoreService = game:GetService("DataStoreService")

local joinRoom = replicatedStorage:WaitForChild("JoinRoom")
local createRoom = replicatedStorage:WaitForChild("CreateRoom")
local play = replicatedStorage:WaitForChild("Play")

local roomCodes = dataStoreService:GetOrderedDataStore("RoomCodes")

function loadCodes()
	local roomCodesTable

	local s = pcall(function()
		roomCodesTable = roomCodes:GetSortedAsync(false, math.huge)
	end)

	if not s then
		wait(1)
		loadCodes()
	end

	return roomCodesTable
end

function saveCode(code)
	local s = pcall(function()
		roomCodes:SetAsync(code)
	end)

	if not s then
		wait(1)
		saveCode(code)
	end
end

play.OnServerEvent:Connect(function(player)
	player.PlayerGui.TeleportGui.RoomCode:Destroy()
	player.PlayerGui.TeleportGui.Enabled = true

	teleportService:Teleport(6978966233, player)
end)

joinRoom.OnServerEvent:Connect(function(player, code)
	local codes = loadCodes()
	local codeInfo = table.find(codes, code)
	
	print(codeInfo[1], codeInfo[2])
	if codeInfo then
		teleportService:TeleportToPrivateServer(6978966233, codeInfo[2], {player})
	end
end)

createRoom.OnServerEvent:Connect(function(player)
	local roomTeleportCode = teleportService:ReserveServer(6978966233)
	local roomCode = string.sub(roomTeleportCode, 1, 6)

	print(roomCode, roomTeleportCode)
	player.PlayerGui.TeleportGui.RoomCode.Text = "Your room code is "..roomCode
	player.PlayerGui.TeleportGui.Enabled = true

	saveCode({roomCode, roomTeleportCode})
	teleportService:TeleportToPrivateServer(6978966233, roomTeleportCode, {player})
end)

This is a server script placed in serverscriptservice