When using a variable time-step, the game becomes non deterministic, as you can see it can break the flow of gameplay on a slower device.
The easiest way to fix this error would be to implement a fixed timestep with interpolation. If implemented correctly the logic of the game will always update at the same rate, and becomes deterministic, meaning a simulation will always play out the same(if there are no random numbers, or if there are random numbers the random numbers are seeded the same way).
Here is an answer with resources on how to implement a fixed timestep.
Semi-fixed or Fully-fixed timestep?Semi-fixed or Fully-fixed timestep?
Here is an answer that explains how to implement interpolation for movement and transformations.
How to Interpolate between two game states?How to Interpolate between two game states?