Here is my code:

local dss = game:GetService("DataStoreService")
local posstor = dss:GetDataStore("POS")

while true do
	local interval = 15
	wait(interval)
	
	game.Players.PlayerAdded:Connect(function(player)
		local Chr = player.Character or player.CharacterAdded:Wait()
		local HRP = Chr.HumanoidRootPart
		local success, errormessage = pcall(function()
			posstor:GetAsync(player.UserId.."pos", {HRP.Position.X, HRP.Position.Y, HRP.Position.Z})
		end)
		
		if not success then
			warn(errormessage)
		end
		
	end)
	
	
game.Players.PlayerRemoving:Connect(function(player)
		local playerid = player.UserId
		local char = player.Character or player.CharacterAdded:Wait()
	local playerHRP = char.HumanoidRootPart
	local setSuccess, errorMessage = pcall(function()
		posstor:SetAsync(playerid.."pos", {playerHRP.Position.X, playerHRP.Position.Y, playerHRP.Position.Z})
	end)

	if not setSuccess then
		warn(errorMessage)
	end
end)
end

Aaaaand.. it doesn't save your position, or give me any error message.