         @sut.once 'message', @onMessage
         @sut.subscribe 'hubris', ['broadcast'], undefined, =>
           @sut.unsubscribe 'hubris', ['broadcast'], =>
-            @redis.publish 'test:broadcast:hubris', JSON.stringify(that: 'would never happen to me!'), =>
-              done()
+            @redis.publish 'test:broadcast:hubris', JSON.stringify(that: 'would never happen to me!'), done
+
+      beforeEach (done) ->
+        setTimeout done, 100
 
       it 'should not get a message', ->
         expect(@onMessage).not.to.have.been.called

        @sut.subscribe 'apple', ['received'], ['-p*r*'], done

      describe 'when given a matching string', ->
        beforeEach (done) ->
          message = devices: ['apple'], topic: 'pears', payload: 'hi'
          @redis.publish 'test:received:apple', JSON.stringify(message), done

        it 'should not emit the message', ->
          expect(@onMessage).not.to.have.been.called

      describe 'when given a non-matching string', ->
        beforeEach (done) ->
          message = devices: ['apple'], topic: 'paer', payload: 'hi'
          @redis.publish 'test:received:apple', JSON.stringify(message), done

        it 'should not emit the message', ->
          expect(@onMessage).not.to.have.been.called

      describe 'when given a non-matching string', ->
        beforeEach (done) ->
          message = devices: ['apple'], topic: 'dear', payload: 'hi'
          @redis.publish 'test:received:apple', JSON.stringify(message), done

        it 'should emit the message', ->
          expect(@onMessage).to.have.been.called


      describe 'receiving a broadcast message', ->
        beforeEach (done) ->
          @redis.publish 'test:broadcast:heart', JSON.stringify(couldBe: 'The 80s band'), done

        it 'should not get any', ->
          expect(@onMessage).not.to.have.been.called

      describe 'receiving a received message', ->
        beforeEach (done) ->
          @redis.publish 'test:received:heart', JSON.stringify(couldBe: 'lovesick?'), done

        it 'should not get any', ->
          expect(@onMessage).not.to.have.been.called

      describe 'receiving a received message', ->
        beforeEach (done) ->
          @redis.publish 'test:received:heart', JSON.stringify(couldBe: 'lovesick?'), done

        it 'should not get any', ->
          expect(@onMessage).not.to.have.been.called
