Documentation says timers run on system time, but do they?

I was concerned by this statement in the documentation for timer.performWithDelay():

Timers run on system time. If the app is suspended, running timers will not be automatically paused, meaning that when the app is resumed, all timers that would have completed/triggered during the suspended period will trigger immediately. 

But in my testing (in the Mac simulator and on Android; haven’t tested in iOS), this doesn’t seem to be true. That is, when I suspend the app (switch away from it, such as to the home screen or another app), transitions and timers all seem to pause automatically. When I resume the app, they pick up right where they left off instead of skipping ahead in time. This is certainly nice behavior from my standpoint, but as far as I can tell, this would mean the documentation is wrong. (My guess is they actually run on system.getTimer(), which does pause while the app is suspended.)

Here’s some sample code. The red square uses transition.to (move to the right over 10 seconds), and the green square uses timer.performWithDelay (jump to the right after 10 seconds). Both auto-pause on app suspension in my tests.

local r1 = display.newRect ( 0, 0, 200, 200 ) r1.anchorX, r1.anchorY = 0, 0 r1.fill = { 1,0,0 } local r2 = display.newRect ( 0, 400, 200, 200 ) r2.anchorX, r2.anchorY = 0, 0 r2.fill = { 0,1,0 } transition.to ( r1, { time = 10000, x = 300, iterations = 0 } ) timer.performWithDelay ( 10000, function() r2.x = 300 end )