             expect(decorationState[decoration3.id].item).toBe decorationItem
             expect(decorationState[decoration3.id].class).toBe 'test-class'
 
-            waitsForStateToUpdate presenter, -> blockDecoration1.destroy()
+            waitsForStateToUpdateAsync presenter, -> blockDecoration1.destroy()
             runs ->
               decorationState = getContentForGutterWithName(presenter, 'test-gutter')
               expect(decorationState[decoration1.id]).toBeUndefined()

                expect(lineStateForScreenRow(presenter, 6).decorationClasses).toEqual ['a', 'b']
                expect(lineStateForScreenRow(presenter, 7).decorationClasses).toBeNull()

              waitsForStateToUpdate presenter, -> editor.getBuffer().insert([5, 0], 'x')
              runs ->
                expect(marker1.isValid()).toBe false
                expect(lineStateForScreenRow(presenter, 4).decorationClasses).toBeNull()
                expect(lineStateForScreenRow(presenter, 5).decorationClasses).toBeNull()
                expect(lineStateForScreenRow(presenter, 6).decorationClasses).toBeNull()

              waitsForStateToUpdate presenter, -> editor.undo()
              runs ->
                expect(lineStateForScreenRow(presenter, 3).decorationClasses).toBeNull()
                expect(lineStateForScreenRow(presenter, 4).decorationClasses).toEqual ['a', 'b']

                expect(lineStateForScreenRow(presenter, 6).decorationClasses).toEqual ['b']
                expect(lineStateForScreenRow(presenter, 7).decorationClasses).toBeNull()

              waitsForStateToUpdateAsync presenter, -> marker2.destroy()
              runs ->
                expect(lineStateForScreenRow(presenter, 2).decorationClasses).toBeNull()
                expect(lineStateForScreenRow(presenter, 3).decorationClasses).toBeNull()
