Timer ending too soon

Is it normal that timers expire before the specified time? I would expect it to time out after the first _process that exceeds the given time, so why is it happening before the specified interval?

print(Time.get_ticks_msec()) # prints: 677
await get_tree().create_timer(0.1).timeout
print(Time.get_ticks_msec()) # prints 681 (4ms)

print(Time.get_ticks_msec()) # prints: 670
await get_tree().create_timer(1).timeout
print(Time.get_ticks_msec()) # prints 1603 (933ms)

pretty sure timer uses _physics_process.

Yes, I think it might be. The create timer has many layers of complexity, signal processing, frames per second dependency etc. It is not recommended for high precision timing. For that you can use either a custom process using delta in the _process function or Time.get_ticks_msec() for your own timer process.

I believe that is true at least.