Data Store sometimes throttles

Title is pretty self explanatory. Sometimes when my Data Store throttles, I notice that it saves my data 2 times rather than 1 and because of that, it throttles. How can I prevent this?

local DataStoreService = game:GetService("DataStoreService")
local PlayerDataStore = DataStoreService:GetDataStore("PlayerDataStore")

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local ReplicatedFirst = game:GetService("ReplicatedFirst")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local dataFolder = ReplicatedFirst.DataFolder
local leaderstatsFolder = ReplicatedFirst.leaderstats
local remoteEventsFolder = ReplicatedStorage.Remotes

local GET_DATA_INTERVAL = 3
local DISTRIBUTE_DATA_INTERVAL = 3

local function defaultData(player, pointsValue, levelValue)
	
	player.leaderstats.Points.Value = pointsValue
	player.leaderstats.Level.Value = levelValue
	
end

local function setPlayerDataFolder(player, user, parent)
	
	local newDataFolder = dataFolder:Clone()
	local newLeaderstatsFolder = leaderstatsFolder:Clone()

	newDataFolder.Name = user
	newDataFolder.Parent = parent
	newLeaderstatsFolder.Parent = player
end

local function setPlayer(player)
	
	setPlayerDataFolder(player, player.Name, ServerStorage)
	
	local character = player.Character or player.CharacterAdded:Wait()
	local nameTag = ServerStorage.NameTag:Clone()
		
	nameTag.User.Text = player.Name
	nameTag.Parent = character.Head
end

    local function writeData(player)
	
	if player then
	
	setPlayer(player)
	
	local playerKey = "-Data" .. player.UserId
	
		local data = { 
			
	  ["Points"] = player.leaderstats.Points.Value,
	  ["Level"] = player.leaderstats.Level.Value,
	}	
		
	local Player_Data
	
	repeat wait()
		
	local success, errormessage = pcall(function()
		Player_Data = PlayerDataStore:GetAsync(playerKey)		
	end)

			
  if success then	
		if Player_Data then
			data = Player_Data
					
			player.leaderstats.Points.Value = data.Points
			player.leaderstats.Level.Value = data.Level
		else				
			defaultData(player, 25, 0)
		 end
	else			
		warn(string.format("Data may take longer to load than usual for %s % %s", player.Name, "Debug_Code:", errormessage))
	end
		
	until GET_DATA_INTERVAL == 3 or success
		
	    end
    end

    local function distributeData(player)
		
	local playerKey = "-Data" .. player.UserId
	
	local data = { 
	 ["Points"] = player.leaderstats.Points.Value,
     ["Level"] = player.leaderstats.Level.Value,	
	}
	
	repeat wait()
	
	local success, errormessage = pcall(function()
		PlayerDataStore:SetAsync(playerKey, data)
	end)
		
	if success then
		print(player.Name .. " 's data successfully saved")
	else
		warn(errormessage)
	end
		
	DISTRIBUTE_DATA_INTERVAL = DISTRIBUTE_DATA_INTERVAL + 1	
		
	until DISTRIBUTE_DATA_INTERVAL == 3 or success
	
	ServerStorage[player.Name]:Destroy()
end

Players.PlayerAdded:Connect(writeData)
Players.PlayerRemoving:Connect(distributeData) 

game:BindToClose(function()
	for _, player in ipairs(Players:GetPlayers()) do
	   if player then	
			distributeData(player)
		end
	end
end)

Sorry, you can’t. This seems to be an internal Roblox core issue.