UNet OnStartServer script order of execution?

I’m running into an issue where two components are dependent on the order of which they run (which is bad in and of itself, just haven’t found an alternative yet) however they both need to execute when the server starts.

Each component overrides the OnStartServer() hook and does it’s thing. This worked until I restarted unity and the order apparently swapped! I attempted to use Script Execution Order but does not seem to have any effect on which script is called first in terms of the hook.

Is it possible to explicitly declare which OnStartServer() is called first?

I haven’t found an elegant way to avoid the issue entirely, but I have to move on in my schedule so I’ve gone with the following pattern (if someone finds a better way please share):

public class ServerExample : NetworkBehaviour {
    public bool HasInitialized { get; private set; }
    public event EventHandler OnInitialized;
    
    public override void OnStartServer() {
         //do whats needed....

        if(OnInitalized != null) {
             OnInitialized(this, EventArgs.Empty);
        }
        
        HasInitialized = true;
    }
}

and the class that is dependent on that …

public class ServerDependent : NetworkBehaviour {
   private ServerExample serverExample;

   public override OnStartServer() {
        serverExample = FindObjectOfType<ServerExample>();

        if(serverExample.HasInitialized) {
             // do what's needed... all is well
        } else {
            serverExample.OnInitialized += OnServerExampleInitialized;
        }
   }

   private void OnServerExampleInitialized(Object sender, EventArgs e) {
         // do what's needed
   } 
}