When a macro starts it basically runs in its own new process. No checks for enabled / disabled happen during the macro run, only at the beginning of the macro run.
An endless loop can probably be reworked to something that doesn’t require an endless loop.
I’d also recommend having a cancel all macro. E.g. Cancel / Kill All Running Macros - #5 by DanThomas