In the design of LoRaWAN, nodes are required to maintain state through that. They’re just not supposed to be cold restarted.
People think that OTAA eliminates this need, but in reality it only moves it - instead of remembering the session details, now you have to remember the used dev nonces.
As a hack on the requirement, stacks will try starting with a random dev nonce, and then counting linearly forward from there with each attempt. This classically fails if a given port to hardware doesn’t have an actual random number generator implementation, since it will always start at the same “random” number like 0 (hey, as Randal Monroe points out, a constant could have been chosen by a fair dice roll!) and then count forward - meaning each join takes at least one more attempt than the last one.
Complying with the spec is better than banging ones head against the wall until non-compliance finally reaches a working nonce…