 
         server = app.listen PORT, () ->
           server2 = apiary.listen (PORT + 1), ->
-        # Race condition workaround
-        # Spawned process doesn't write to stdout before is terminated
-        setTimeout () ->
-          setTimeout () ->
-            undefined
-          , 500
-
+
+        wakeUpEventLoop ->
           execCommand cmd, () ->
-            # Comment out this timeout to enable race condition bug
-            # Event loop get stuck or idle without this
-            # https://github.com/apiaryio/dredd/issues/282
-            setTimeout () ->
-              undefined
-            , 1000
-
-            server2.close ->
-              server.close ->
+            wakeUpEventLoop ->
+              server2.close ->
+                server.close ->
 
         server.on 'close', done
 

          res.send {}

        server2 = apiary.listen (PORT + 1), ->
          # Comment out this timeout to enable race condition bug
          # Event loop get stuck or idle without this
          # https://github.com/apiaryio/dredd/issues/282
          setTimeout () ->
            undefined
          , 1000

          execCommand cmd, () ->
            server2.close ->

        server2.on 'close', done



      server = app.listen PORT, () ->
        server2 = apiary.listen (PORT + 1), ->
          wakeUpEventLoop ->
            execCommand cmd, () ->
              server2.close ->
                server.close () ->
                  done()

    it 'should not print warning about missing APIARY_API_KEY and APIARY_API_NAME', () ->
      assert.notInclude stderr, 'Apiary reporter environment variable APIARY_API_KEY or APIARY_API_NAME not defined.'
