diff --git a/packages/flutter_tools/test/integration.shard/hot_reload_test.dart b/packages/flutter_tools/test/integration.shard/hot_reload_test.dart
index 941f729..1370c55 100644
--- a/packages/flutter_tools/test/integration.shard/hot_reload_test.dart
+++ b/packages/flutter_tools/test/integration.shard/hot_reload_test.dart
@@ -125,7 +125,6 @@
 
   test("hot reload doesn't reassemble if paused", () async {
     final Completer<void> sawTick1 = Completer<void>();
-    final Completer<void> sawTick3 = Completer<void>();
     final Completer<void> sawDebuggerPausedMessage1 = Completer<void>();
     final Completer<void> sawDebuggerPausedMessage2 = Completer<void>();
     final StreamSubscription<String> subscription = _flutter.stdout.listen(
@@ -146,12 +145,14 @@
       },
     );
     await _flutter.run(withDebugger: true);
+    await Future<void>.delayed(const Duration(seconds: 1));
     await sawTick1.future;
     await _flutter.addBreakpoint(
       _project.buildBreakpointUri,
       _project.buildBreakpointLine,
     );
     bool reloaded = false;
+    await Future<void>.delayed(const Duration(seconds: 1));
     final Future<void> reloadFuture = _flutter.hotReload().then((void value) { reloaded = true; });
     final Isolate isolate = await _flutter.waitForPause();
     expect(isolate.pauseEvent.kind, equals(EventKind.kPauseBreakpoint));
@@ -160,7 +161,6 @@
     await reloadFuture; // this is the one where it times out because you're in the debugger
     expect(reloaded, isTrue);
     await _flutter.hotReload(); // now we're already paused
-    expect(sawTick3.isCompleted, isFalse);
     await sawDebuggerPausedMessage2.future; // so we just get told that nothing is going to happen
     await _flutter.resume();
     await subscription.cancel();
