В процедуре Modules.GetProcedure происходит ожидание загрузки модуля, в котором должна быть
процедура, если такой модуль не загружен ещё. Почему это сделано так:
## Код:
```
IF ~module.init THEN
   t := Machine.GetTimer();
   WHILE ~module.init & (Machine.GetTimer() - t < ModuleInitTimeout) DO END;
   IF ~module.init THEN (* timeout has expired *)
      RETURN;
   END;
END;
```

Ведь есть же Kernel.Timer, у него есть Sleep. А также есть AWAIT. Про AWAIT я ещё могу предположить, что он не сможет ощутить таймаут. А почему Sleep не использована?