content: ' Has to be done with a delay (using Timer) so Router/RouterOutlet is able to catch the change
  ' Redirects to a new URL
  ' @param {Object} navigationData
  ' @param {String} navigationData.path - new URL
  ' @param {Object} navigationData.params - query params
  ' @param {Boolean} [resetHistory=false] - determines if the routes history should be reset
  sub redirect(navigationData as Object, resetHistory = false as Boolean)
    m._redirectionData = navigationData
    m._resetHistory = resetHistory
  
    ' Avoid saving in the history the guarded route
    m._redirectionData.skipInHistory = true
  
    ' @todo use setTimeout
    m._timer = CreateObject("roSGNode", "Timer")
    m._timer.duration = 0
    m._timer.observeField("fire", "_onSetTimeoutCallback")
    m._timer.control = "START"
  end sub
  
  ' @private
  sub _onSetTimeoutCallback(event as Object)
    m.global.router.activatedRoute.shouldSkip = true
    m.global.router.callFunc("navigate", m._redirectionData)
    if (m._resetHistory)
      m.global.router.callFunc("resetHistory")
    end if
  end sub
  