Time is fine for synchronizing when all components are actually reading and acting in accordance with a clock, and agree on using the same one (or a well-characterized facsimile of the same one).
Time is used at the bottom layers of hardware. Certain components generate a signal, and expect the response signal to be settled within a certain time.
Even in situations in which there is robust signaling (like a device can indicate for indefinite periods that it is "not ready" and another device will wait), the underlying signals on which that is based have to meet timing constraints.
You have rules like "when pin X is driven high, the data is expected to be present on lines Y_0 through Y_32 within time T_x." If not, there will be garbage.
All notion order in the machine rests on arbitrary timing at the lowest electronic design level.