title: QUnit Async Tests with setup And teardown
body: <p>I need a little help understanding QUnit internas. 
  I read its source from time to time, but i'm still writing weird test when it comes to asynchronous tests.
  I understand the concept of asynchronous tests, and the stop() and start() methods (and why they are needed), but when i combine them with setup and teardown i get a lot of weired situations.</p>
  
  <p>Here is my Testcode:</p>
  
  <pre><code>use(['Psc.Exception','Psc.Code'], function () {
    module("async", {
      setup: function () {
        console.log('setup');
      }, teardown: function () {
        console.log('teardown');
      }
    });
  
    asyncTest("test1", function () {
      expect(0);
  
      console.log('test1');
      start();
    });
  
    asyncTest("test2", function () {
      expect(0);
  
       console.log('test2');
       start();
    });
  
    asyncTest("test3", function () {
      expect(0);
  
      console.log('test3');
      start();
    });
  
    asyncTest("test4", function () {
      expect(0);
  
      console.log('test4');
      start();
    });
  
    asyncTest("test5", function () {
      expect(0);
  
      console.log('test5');
      start();
    });
  });
  </code></pre>
  
  <p>Allthough these are asynchron tests, i thought i would get something like this in the console:</p>
  
  <pre><code>setup
  test1
  teardown
  setup
  test2
  teardown
  setup
  test3
  teardown
  ...
  </code></pre>
  
  <p>because i thought qunit would call setup and teardown around the test bodys?</p>
  
  <p>but I get everything mixed up, from request to request in another way shuffled.</p>
  
  <pre><code>setup
  test1
  teardown
  setup
  setup
  setup
  setup
  test5
  teardown 
  test4
  teardown
  test3
  teardown
  test2
  teardown
  </code></pre>
  
  <p>is someone able to explain it step by step?</p>