GlobalActor directive doesn't guarantee a function will be called on that actor?

Assuming I have defined a global actor:

@globalActor actor MyActor {
	static let shared = MyActor()
}

And I have a class, in which a couple of methods need to act under this:

class MyClass {

    @MyActor func doSomething(undoManager: UndoManager) {

        // Do something here
   
        undoManager?.registerUndo(withTarget: self) { 
            $0.reverseSomething(undoManager: UndoManager)
        }
    }

    @MyActor func reverseSomething(undoManager: UndoManager) {

        // Do the reverse of something here

        print(\(Thread.isMainThread) /// Prints true when called from undo stack
   
        undoManager?.registerUndo(withTarget: self) { 
            $0.doSomething(undoManager: UndoManager)
        }
    }
}

Assume the code gets called from a SwiftUI view:

struct MyView: View {
   @Environment(\.undoManager) private var undoManager: UndoManager?
   let myObject: MyClass

   var body: some View {
        Button("Do something") { myObject.doSomething(undoManager: undoManager) }
   }
}

Note that when the action is undone the 'reversing' func it is called on the MainThread. Is the correct way to prevent this to wrap the undo action in a task? As in:

    @MyActor func reverseSomething(undoManager: UndoManager) {

        // Do the reverse of something here

        print(\(Thread.isMainThread) /// Prints true
   
        undoManager?.registerUndo(withTarget: self) { 
            Task { $0.doSomething(undoManager: UndoManager) }
        }
    }
GlobalActor directive doesn't guarantee a function will be called on that actor?
 
 
Q