I thought the problem was that your LED on / off and the ring pulse were not happening at the same time, but it seems like it is not and you want to be able to read input while the ring is pulsing and if something new comes along either abandon the pulsing and / or start a new pulsing sequence. Can you confirm if that is what you want?
The key piece of advice from AdaFruit is:-
If you want to read input while an animation is running, you'll need to rearrange the code so it
only displays a single frame of the animation before checking for BLE input again.
So the technique for doing this is to remove the for loop and the delay and do it by hand. That is the blink without delay technique for calling the pulsing task which just makes one step and then returns. So this means each time the pulsing task is entered what was the for loop's index variable gets incremented, and if this is not at its limit the next animation step is made. If it is at its limit to raise a flag ( set a boolean variable ) which stops this task from being called by the time out on the blink without delay task calling part.