:GetMarkerReachedSignal running multiple times at once

I am trying to make when ever the anim event is reached, the enemy player takes damage.
However, the :GetMarkerReachedSignal() runs like 14x the amount it needs to. (one)
Even though I have a return end at the end, which should stop this from happening.
I have tried a bunch of things and am tired of doing so.

Heres my code:

playerPlay:GetMarkerReachedSignal("Hit"):Connect(function() --playerPlay is my anim
					if vicHum.Health > script.damage.Value then --vicHum is the enemys Humanoid
						vicHum:TakeDamage(script.damage.Value)
						else
						vicHum.Health = 1
					end
				return-- this is the return im talking about, which obviously isnt doing its job
				end)

If anyone could help, it would be greatly appreciated!
Thanks!

debounce = false
playerPlay:GetMarkerReachedSignal("Hit"):Connect(function()
	if not debounce then
		debounce = true
		if vicHum.Health > script.damage.Value then 
			vicHum:TakeDamage(script.damage.Value)
		else
			vicHum.Health = 1
		end
		delay(0.1, function()
			debounce = false
		end)
	end
end)

perhaps this may solve your issue.

Nope, it did not, still the same exact thing happening as before

i dont really know then, have you tried printing something to see how much times it exactly runs?

ye, it runs about 7 times each time the :GetMarkerReachedSignal() function runs