Subscribe to 'Finished' event of modal operator and get result of the operator
After a week of reasearch and discussion on blenderartist
iceythe helped me finding a solution writing a wrapper for the uv packmaster modal of the pack operator. (bpy.ops.uvpackmaster2.uv_pack())
Wrapper
import bpy
from uvpackmaster2 import UVP2_OT_PackOperator as op
from .bake_operator import callback

def modal_wrap(modal_func):

    def wrap(self, context, event):
        ret, = retset = modal_func(self, context, event)
        if ret in {'FINISHED'}:
            print(f&quot;{self.bl_idname} returned {ret}&quot;)
            callback(ret)
        return retset
    return wrap

op._modal_org = op.modal
op.modal = modal_wrap(op.modal)

And an operator I tried it with :
import bpy

retval = None

def callback(ret):  # &lt;- Modal wrapper calls this.
    global retval
    retval = ret
    bpy.ops.object.mode_set(mode='OBJECT')
    bpy.ops.object.bake('INVOKE_DEFAULT', type=&quot;AO&quot;)


class BakteTexureOperator(bpy.types.Operator):
    bl_idname = &quot;object.bake_texture&quot;
    bl_label = &quot;Bake Texure&quot;

    def invoke(self, context, event):
            bpy.ops.object.mode_set(mode='EDIT')
            bpy.ops.mesh.reveal()
            bpy.ops.mesh.select_all(action='SELECT')
            bpy.ops.uv.smart_project()
            bpy.ops.uv.select_all(action='SELECT')
            bpy.ops.uvpackmaster2.uv_pack()

            print(&quot;after invoke&quot;)
            wm = context.window_manager
            wm.modal_handler_add(self)
            return {'RUNNING_MODAL'}

    def modal(self, context, event):
            if event.type in {'RIGHTMOUSE', 'ESC'}:
                return {'CANCELLED'}

            elif retval is not None:
                return self.execute(context)

            return {'PASS_THROUGH'}

    def execute(self, context):
            global retval
            val = retval
            retval = None  # Reset.

            if 'CANCELLED' in val:
                print(&quot;operator was cancelled&quot;)
                return {'CANCELLED'}

            else:
                print(&quot;operator finished&quot;)
                return {'FINISHED'}

To try it out just install the addon, select an image you want to bake to in the node editor and click the bake button in the bake testing panel.
It will unrwap and pack the uv's and the best thing is that you get a progress bar and you can cancel the baking. It's all comming from blender by running the bake operator as a modal.
The code for the full test bake addon can be found here :
Bake Testing