Any alternatives to MarkerReachedSignal:Wait()?

Hello, I am creating animations that contain Animation Markers/Events at certain times, to trigger sounds. For example, in the middle of a sword swing animation I have a marker “SwingSound”, the code has a GetMarkerReachedSignal(“SwingSound”):Wait(), and when it reaches that marker, a sound plays.

However I come across this problem where the player can start the animation, deselect the tool, restart the animation, and then deselect it, and continue this process for as long as they want. When the swing animation finally hits the marker, the sound is a gazillion times louder. I think it’s because with each animation being triggered, the code is making multiple :Wait()'s for each animation’s swing sound, and that Wait() line will continue to wait until the animation finally plays.
Does anyone know how to counter this? LMK if you need more context.

Probably the easiest way is to not use the Wait() method and instead use Connect() method. You could then disconnect all RBXScriptConnection objects (returned from the Connect() method) when the player deselects the tool.