       signal.add listener1
       signal.add listener2
       ms = new Date().valueOf()
-      signal.dispatch 1, 2, 3, ->
-        ms = new Date().valueOf() - ms
-
-        expect(ms >= 200).toBeTruthy()
-        done()
+
+      runs ->
+        signal.dispatch 1, 2, 3, ->
+          ms = new Date().valueOf() - ms
+
+          expect(ms >= 200).toBeTruthy()
+          ended = true
+
+      waitsFor progress(-> ended), 'Signal timed out', 1000
 
   describe 'when a listener signature have been specified', ->
     it 'should prevent invalid listener to be passed', ->

  describe 'with an asynchronous listener', ->

    it 'should wait until the callback was called
        before doing to the next listener'.squeeze(), (done) ->

      listener1Called = false
      listener1Args = null

      ended = false

      listener1 = (a,b,c,callback) ->
        setTimeout ->
          listener1Args = [a,b,c]
          listener1Called = true
