How do I make it wait a bit until attacking again?

What I want:
https://gyazo.com/32252d1b7c407d6b475063b9a0a8367a

What I’m dealing with:
https://gyazo.com/5571a0255ce4adc7517e4a9ee3955d1f

Local Script:

--//Functions//--
local Tool = script.Parent
local Mouse = game.Players.LocalPlayer:GetMouse()
local Anims = Tool:WaitForChild("Anims")
local Hit = Tool:WaitForChild("Handle").Hit

local UIS = game:GetService("UserInputService")
local held = false

function isEquipped()
	if Tool.Parent:FindFirstChild("Humanoid") then
		return true else return false
	end
end

--//Main//--
Tool.Equipped:Connect(function()
	local Char = Tool.Parent
	local Hum = Char:WaitForChild("Humanoid")
	
	local Equip = Hum:LoadAnimation(Anims.Equip)
	Equip:Play()
end)

Tool.Activated:Connect(function()
	local Char = Tool.Parent
	local Hum = Char:WaitForChild("Humanoid")

	--//Anims//--
	local Idle = Hum:LoadAnimation(Anims.Idle)
	local Equip = Hum:LoadAnimation(Anims.Equip)
	local HoldStart = Hum:LoadAnimation(Anims.HoldStart)
	local Hold = Hum:LoadAnimation(Anims.Hold)
	local Swing = Hum:LoadAnimation(Anims.Swing)
	
	--//Input//--
	UIS.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			HoldStart:Play()
			HoldStart.Stopped:Wait()
			Hold:Play()
			
			held = true

			while held == true do
				game:GetService("RunService").RenderStepped:Wait()
			end
		end
	end)

	UIS.InputEnded:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			if not isEquipped() then return end
			Hit:FireServer()

			Hold:Stop()
			Swing:Play()

			held = false
		end
	end)
end)

Add a debounce.

--//Functions//--
local Tool = script.Parent
local Mouse = game.Players.LocalPlayer:GetMouse()
local Anims = Tool:WaitForChild("Anims")
local Hit = Tool:WaitForChild("Handle").Hit

local UIS = game:GetService("UserInputService")
local held = false
local debounce = false

function isEquipped()
	if Tool.Parent:FindFirstChild("Humanoid") then
		return true else return false
	end
end

--//Main//--
Tool.Equipped:Connect(function()
	local Char = Tool.Parent
	local Hum = Char:WaitForChild("Humanoid")
	
	local Equip = Hum:LoadAnimation(Anims.Equip)
	Equip:Play()
end)

Tool.Activated:Connect(function()
	local Char = Tool.Parent
	local Hum = Char:WaitForChild("Humanoid")

	--//Anims//--
	local Idle = Hum:LoadAnimation(Anims.Idle)
	local Equip = Hum:LoadAnimation(Anims.Equip)
	local HoldStart = Hum:LoadAnimation(Anims.HoldStart)
	local Hold = Hum:LoadAnimation(Anims.Hold)
	local Swing = Hum:LoadAnimation(Anims.Swing)
	
	--//Input//-- --> You may also want to interact with the debounce somewhere around here.
	UIS.InputBegan:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			HoldStart:Play()
			HoldStart.Stopped:Wait()
			Hold:Play()
			
			held = true

			while held == true do
				game:GetService("RunService").RenderStepped:Wait()
			end
		end
	end)

	UIS.InputEnded:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 then
			if not isEquipped() or debounce then return end
            debounce = true
			Hit:FireServer()

			Hold:Stop()
			Swing:Play()

			held = false
            task.delay(5, function() --> Change 5 to your timeout length. Do not change this to a task.wait, or else it will yield.
               debounce = false
            end)
		end
	end)
end)