I don't know why this isn't working, it prints "SavedSkinEquiped", but then when I rejoin, the value is ""

game.Players.PlayerAdded:Connect(function(player)
	local skinEquiped = Instance.new("StringValue")
	skinEquiped.Name = "SkinEquiped"
	skinEquiped.Parent = player
	local player_data
	
	pcall(function()
		player_data = skinEquipedDataStores:GetAsync(player.UserId.."-SkinEquiped")
	end)
	
	if player_data ~= nil then
		skinEquiped.Value = player_data
	else
		skinEquiped.Value = defaultSkinEquiped
	end
	
	local bindableEvent = Instance.new("BindableEvent")
	
	game.Players.PlayerRemoving:Connect(function(player)
		
		pcall(function()
			skinEquipedDataStores:SetAsync(player.UserId.."-SkinEquiped", player.SkinEquiped.Value)
			print("SavedSkinEquiped")
			playersLeft = playersLeft -1
			bindableEvent:Fire()
		end)
		
	end)
	
	game:BindToClose(function()
		while playersLeft > 0 do
			bindableEvent.Event:Wait()
		end
	end)
	
end)