Grab and throw move

so when used (set to the T button) it DOES grab someone, then it tries to throw them but at that point it seemingly starts deleting and the remaking the weld, any help?

local throwcooldown = false
function throw()
	if activu == true then return end
	if throwcooldown == true then return end
	throwcooldown = true
	activu = true
	Grab:Play()
	wait(0.3)
	hitbox.Touched:Connect(function(hit)
			if hit.Parent:FindFirstChild("Humanoid") and hit.Parent.Humanoid ~= humanoid then
			local char = hit.Parent
			local weld = Instance.new("Motor6D")
			weld.Parent = char.Torso
			weld.Part0 = char.Torso
			weld.Part1 = hitbox	
				wait(0.5)
				
			Throw:Play()
			wait(0.5)
			weld:Destroy()
			wait(0.1)
				char.HumanoidRootPart.Velocity = CFrame.new(hitbox.Position, mouse.Hit.p).lookVector * 200
				wait(1)
				activu = false
			
				throwcooldown = false
		end
		end)
	end

weld:Destroy() is where i think it breaks, but i dont get any errors in the console.

it seems like it keeps duplicating the weld over and over at the weld:Destroy() point for some reason

I think you touch target multiple times. You need to put debounce on it.