           done()
         , 500
 
+    router.push '/pages/33'
+
+
+  it 'should interrupt a running flow and starts another (destroy+render)', (done)->
+
+    router = new Router 'render+destroy'
+    router.get '/', render, destroy
+    router.get '/pages', render, destroy, '/'
+    router.get '/pages/:id', render, destroy, '/pages'
+    router.get '/auth', render, destroy
+    router.get '/login', render, destroy, '/auth'
+
+    requests =  [
+      {url: '/', pattern: '/', params: {}}
+      {url: '/pages', pattern: '/pages', params: {}}
+      {url: '/auth', pattern: '/auth', params: {}}
+      {url: '/login', pattern: '/login', params: {}}
+    ]
+
+    out.log = (type, req)->
+      type.should.equal 'render'
+      req.should.deep.equal requests.shift()
+      if requests.length is 0
+        out.log = null
+
+        # waits some time so if something goes wrong, it will throw
+        timeout = new setTimeout ->
+          done()
+        , 500
+
     router.push '/pages/33'
      out?.log 'destroy', req
      done()

    router = new Router 'destroy+render'
    router.get '/', render, destroy
    router.get '/pages', render, destroy, '/'
    router.get '/pages/:id', render, destroy, '/pages'
    router.get '/login', render, destroy


  it 'should render route with param from scratch', (done)->

    requests =  [
      {url: '/', pattern: '/', params: {}}


  out = null
  router = null

  render = null
  destroy = null

  before ->
    out = {}
