In base mode, the onStart callback is always called back when the first worker process (worker ID is 0) starts, before onWorkerStart callback. The coroutine API can always be used in the onStart callback, and onStart is called back again when worker-0 restarts with a fatal error (#4389) (@matyhtf)
In versions prior to 4.8.0, onStart is called back in worker-0 when there is only one worker process, and called back in the Manager process when there are multiple worker processes.