Your solution is somehow like the EnableMenuItems event of Xojo, if I get it right (in that you have to tell the item to be enabled at a given moment, synchronously).
Perhaps like in Xojo where if you have a menu handler, the item becomes available as long as you don’t set AutoEnable to false?
Still, disabled the menu item in Xojo works, but I’d guess the behaviour you’re seeing is along those lines…
Did you read these remarks? Guess it‘s a protocol thing.
This property has no effect unless the menu in which the item will be added or is already a part of has been sent setAutoenablesItems:NO. If a menu item is disabled, its keyboard equivalent is also disabled. See the NSMenuValidation informal protocol specification for cautions regarding this method.