begin method
Open the gate for one transition.
Implementation
int begin() {
if (_consumers.isEmpty) return ++_token;
_failsafeTimer?.cancel();
_navigating = true;
final token = ++_token;
_failsafeTimer = Timer(failsafe, () {
if (_token != token) return;
_release();
});
return token;
}