Two things: you cannot delay for 2 microseconds or 10 microseconds.
The off-the-shelf micros() function has a resolution of 1/256th of about a millisecond, so pick 4, 8 or 12.
Usually for non-blocking you would mark the time and carry on, returning from time to time, via the loop, to see if a prescribed period has passed. You would do it with micros() the same way you would do it with millis(). In reality though how far are you going to get through your code before your time runs out? Is it worth it? Or just stick with your delays?