Apply modifiers - delay script to let them catch up, or make sure they are complete?

I’m setting values on several modifiers, duplicating and exporting the mesh, deleting, reselecting original and starting over with new values. All in a script.

Weird problem is the exports aren’t right. When I do each set of values 1 at a time it’s fine. If I do them all in a loop, they get mixed up.

Using this method to create a gap between calls has helped:
bpy.app.timers.register(functools.partial(funcName,params), first_interval=30*t)
But it still hasn’t solved the problem entirely - one of my modifiers isn’t changing properly.

Does anyone know how I can more easily control timings between lines of code, ideally like a wait(30), if there’s a different solution, or if I’m barking up the wrong tree entirely?