In your calls to ‘timer.performWithDelay()’, an ‘iterations’ count of ‘0’ (zero) means, “Loop Forever”. So your timers are getting in each others way.
The first timer waits for 1500ms, then fires.
The second timer begins to wait for 2500ms.
1500ms later (1000ms before the seconds timer fires) the first timer fires again, mucking everything up (including causing a third timer to be created!)
Solutions:
Use 1 for the ‘iterations’ count (or don’t pass in anything as 1 is the default)
-OR-
Store the timer-id, and cancel the old timer before starting a new timer.