Found out that DispatchSourceTimer set to fire every 500ms with leeway 10ms fires first three times with half of that interval:

203.233003616333
362.44702339172363
512.6810073852539
512.36891746521
511.1290216445923
533.6190462112427
512.20703125
511.90900802612305
511.6978883743286
533.7280035018921
511.7610692977905
511.9049549102783
533.6589813232422
511.79707050323486
512.0589733123779
512.2179985046387
511.40296459198
512.173056602478
511.78693771362305
533.6840152740479

Investigating why dispatch timer fires first three times with interval twice shorter then needed, jumped to Minimize Timer Use and Defer Networking. Then to How to synchronize code to drawing using CADisplayLink and CADisplayLink and its applications.

Side note: interesting case for using CADisplayLink Animated UILabel with CADisplayLink.