So for my first contribution to FreeCAD I'm working on fixing this.
The underlying CAD operations are done by "OpenCascade", and at first I thought OpenCascade had no support for aborting operations part of the way through. So my first implementation was to move the operation into a child process and give the user a dialog box that would allow terminating the child process.
But it actually turns out OpenCascade does support aborting the operations! So now I'm working on doing it the OpenCascade way.
My PR is here: https://github.com/FreeCAD/FreeCAD/pull/19796