I'm pretty sure that is what the entire event system actually is. Every step all objects with a step event receive a notification to run the step event, every mouse_click every object registered for mouse click runs it, etc. Implementing your own is a simple matter of making your own user defined events and calling them. One simple way would be making a parent object for all of your objects, with some user defined events, overload them with objects that want t run the event, and then using with (all) {evt_perform(num)} when you want to run the event.
Whether or not this is actually useful is another thing, the event system already in GMS is pretty good. The only time I've seen this put to good use is in Rimworld, where the tickmanager allows for some objects to only run a step event every X ticks, but without needing to actually do the if (x ticks have passed) inside the used objects, which saves execution time.