Better solution for my slowing trap?

How I would do this is when the component begins overlapping then start using your timer on it, but save your timer handle (it’s the only return on the timer) to some variable.

Now, when the component stops overlapping, (there is an event for this) then you simply invalidate and clear the timer handle you saved. You want to do it slowly? That’s find too, just do it when it stops overlapping.

Your main problem is that you started a timer and you never stop it.