anchor.diff:          var results = [];
           startWatch(phases, {'a|web/a.txt': 'a'}, writer).listen(results.add);
   
  -        await wait(200);
  -        expect(results.length, 1);
  -        checkOutputs({'a|web/a.txt.copy': 'a',}, results[0], writer.assets);
  +        var result = await nextResult(results);
  +        checkOutputs({'a|web/a.txt.copy': 'a',}, result, writer.assets);
   
           await writer.writeAsString(makeAsset('a|web/a.txt', 'b'));
           FakeWatcher
               .notifyWatchers(new WatchEvent(ChangeType.MODIFY, 'a/web/a.txt'));
   
  -        await wait(200);
  -        expect(results.length, 2);
  -        checkOutputs({'a|web/a.txt.copy': 'b',}, results[1], writer.assets);
  +        result = await nextResult(results);
  +        checkOutputs({'a|web/a.txt.copy': 'b',}, result, writer.assets);
         });
   
         test('rebuilds on new files', () async {
  
positive.code:         var results = [];
          startWatch(phases, {'a|web/a.txt': 'a'}, writer).listen(results.add);
  
          await wait(200);
          expect(results.length, 1);
          checkOutputs({'a|web/a.txt.copy': 'a',}, results[0], writer.assets);
  
          await writer.writeAsString(makeAsset('a|web/b.txt', 'b'));
          FakeWatcher
              .notifyWatchers(new WatchEvent(ChangeType.ADD, 'a/web/b.txt'));
  
          await wait(200);
          expect(results.length, 2);
          checkOutputs({'a|web/a.txt.copy': 'a', 'a|web/b.txt.copy': 'b',},
              results[1], writer.assets);
        });
  
        test('rebuilds on deleted files', () async {
  
negative.code:         startWatch(phases, {'a|web/a.txt': 'a', 'a|web/b.txt': 'b',}, writer)
              .listen(results.add);
  
          var result = await nextResult(results);
          checkOutputs({'a|web/a.txt.copy': 'a', 'a|web/b.txt.copy': 'b',},
              result, writer.assets);
  
          await writer.delete(makeAssetId('a|web/a.txt'));
          FakeWatcher
              .notifyWatchers(new WatchEvent(ChangeType.REMOVE, 'a/web/a.txt'));
  
          result = await nextResult(results);
          checkOutputs({'a|web/b.txt.copy': 'b',}, result, writer.assets);
        });
      });
    });
  