Requirements on how to interrupt long Gcode commands

There are some Gcode that currently can’t be interrupted while moving, unless an emergency stop command like M112 is used. I would like to ask, if I want to interrupt a long cycle command, how should I q go about doing it? For example, commands like G28 and M109 cannot normally be interrupted until the command has finished running (except for emergency stops)

You may have a look on these:

See work-cancel-20220322
@koconnor already spent some work on this topic. My current knowledge is that it did not work reliably and thus has been abandoned for the time being due to minor impact