I'm wondering how I can cancel loops

Seeing as you are using the Character Movement Component (CMC), let’s not over engineer and make this complicated.

CMC has built in Jump functionality. Bunny Hopping is literally user timed jumps. You cannot “Jump” unless you are on the ground. Using Timers, Delays etc will not work. They can fire mid air, when falling, swimming, flying etc. You only want to execute a sequential jump/hop when you have landed. So you use “Event On Landed” to execute the next jump.

Write a custom function (Can Hop?) to determine if you can in fact toggle on bunny hopping. You should consider cmc movement mode changes toggling off this action.

e.g. If you bunny hop off an edge into deep enough water to trigger swimming. You’ll want to call a custom event that sets “hop toggle on?” to false. This applies to many other situations. Crouching, Prone, Flying, etc.