title: How to suspend and resume Router without firing any events in ExtJS7?
body: <p>I am trying to silently change the current url hash without the Router firing any events (like <code>onStateChange</code>) and then resume the Router. I tried this:</p>
  <pre><code>Ext.route.Router.suspend(false);
  this.redirectTo('...');
  Ext.route.Router.resume(true);
  </code></pre>
  <p>But the <code>onStateChange</code> is still being fired after <code>resume()</code>. I also tried:</p>
  <pre><code>Ext.route.Router.suspend(false);
  Ext.util.History.un('change', Ext.route.Router.onStateChange, Ext.route.Router);
  Ext.util.History.suspendEvents(false);
  
  this.redirectTo('...');
  
  Ext.util.History.resumeEvents(true);
  Ext.util.History.on('change', Ext.route.Router.onStateChange, Ext.route.Router);
  Ext.route.Router.resume(true);
  </code></pre>
  <p>with the same result. It seems the problem is that the events are being fired outside of the current event loop, so when you suspend the events they are still firing in the current loop.</p>
  <p>I ended up using this hack which seem to do the trick, but maybe there is a cleaner solution:</p>
  <pre><code>Ext.route.Router.suspend(false);
  this.redirectTo('...');
  Ext.Function.defer(function(){
      Ext.route.Router.resume(true);
  }, 1, this);
  </code></pre>