The problem: ULX and ULib startup is driven mostly by timers right now. This means that mileage may vary on whether or not it works, and it is certainly annoying that modules have to wait until ULib is done, when it's taking extra time to be careful.
The goal: Have no timers (at all) involved in the ULX and ULib startup sequences; A possible exception to this would be to run something on the next tick, but only if absolutely necessary. Load modules instantly, but provide hooks (using hook.Add) for phases of ULib/ULX loading.
Notes:
Use OnEntityCreated to know the exact instant the player object is created on the client.