it seems that almost all people that have understood non-blocking timing become blind for that one thing that makes it difficult to understand:
NOT
explaining
the fundamental difference between delay() and non-blocking timing.
Any kind of non-blocking timer works with the same principle.
And this principle is
very different
from delay() it could be seen almost as the
OPPOSITE of delay()
delay()
completely freezes code-execution
delay() = UNconditionally STOP ALL code-execution
.
.
non-blocking timing = GO ON with code-execution
combined with TIME-conditional code-execution
delay: stop all
versus
non-blocking timing: go on with main code
combined with
execute timing-code TIME-conditional