Delay when implementing automation macros

I am wanting to use 2 macros on pause and resume to raise and stop my spindle (on pause) and start my spindle, delay 6 seconds and lower my spindle on resume. I’m having a heck of a time with a delay as soon as I enable these macros and also it not working consistently. Without the macros enabled, the pause button is very reliable, there is almost no delay but as soon as I enable the macros, there is a huge delay, so much so that it’s completely unreliable ( 4 to 10 seconds).
Below are the macros I have been trying:

On Pause:

M05 ; stop spindle

G91 ; Relative positioning

G0 Z25.4 ; Raise 25.4mm

G90 ;Absolute positioning

On Resume

M03 ; Restart spindle

G4 P2 Wait 2 seconds

G91 ; Relative positioning

G0 Z-25.4 ; Lower 25.4mm

G90 ; Absolute positioning

Aside from the delay which I find absolutely unacceptable, the 2 second pause on resume isn’t working and I have no confidence it is raising or lowering the correct amount (sometimes it goes right to the hard stop of Z which is over 50mm higher and it seems too low sometimes when it starts). I have never had these macros enabled when I was actually performing a cut, I just don’t trust it.
Anyone else having similar issues or can help?

Pause automation not being instant is not a bug, it’s the only way to send gcode before a hold state.

See my explanations in the following threads: