Blink without delay uses time monitoring vs delay.
So you note the "time"
startTime = millis( );
and monitor millis( ) until enough time has passed to stop the action.
endTime = startTime + duration;
if (millis( ) >= endTime){
// do next event - stop the motor, restart the motor
}
Maybe add a counter to keep track of how many times its been started.