diff --git a/bin/internal/engine.version b/bin/internal/engine.version
index 5bf8936..6eb648f 100644
--- a/bin/internal/engine.version
+++ b/bin/internal/engine.version
@@ -1 +1 @@
-dd6f46c485192f4506035088c9065b9f5dbba9ab
+6280adbfb1f9f63cdc6179b9b78634add1e4f2e3
diff --git a/packages/flutter_driver/test/flutter_driver_test.dart b/packages/flutter_driver/test/flutter_driver_test.dart
index dcb08da..1a92286 100644
--- a/packages/flutter_driver/test/flutter_driver_test.dart
+++ b/packages/flutter_driver/test/flutter_driver_test.dart
@@ -29,7 +29,7 @@
     void expectLogContains(String message) {
       expect(log.map((LogRecord r) => '$r'), anyElement(contains(message)));
     }
-    
+
     setUp(() {
       log = <LogRecord>[];
       logSub = flutterDriverLog.listen(log.add);
@@ -37,9 +37,9 @@
       mockVM = new MockVM();
       mockIsolate = new MockIsolate();
       mockPeer = new MockPeer();
-      when(mockClient.getVM()).thenReturn(new Future<MockVM>.value(mockVM));
+      when(mockClient.getVM()).thenReturn(mockVM);
       when(mockVM.isolates).thenReturn(<VMRunnableIsolate>[mockIsolate]);
-      when(mockIsolate.loadRunnable()).thenReturn(new Future<MockIsolate>.value(mockIsolate));
+      when(mockIsolate.loadRunnable()).thenReturn(mockIsolate);
       when(mockIsolate.invokeExtension(typed(any), typed(any))).thenAnswer(
           (Invocation invocation) => makeMockResponse(<String, dynamic>{'status': 'ok'}));
       vmServiceConnectFunction = (String url) {
diff --git a/packages/fuchsia_remote_debug_protocol/test/fuchsia_remote_connection_test.dart b/packages/fuchsia_remote_debug_protocol/test/fuchsia_remote_connection_test.dart
index 172a9a8..7d7bab6 100644
--- a/packages/fuchsia_remote_debug_protocol/test/fuchsia_remote_connection_test.dart
+++ b/packages/fuchsia_remote_debug_protocol/test/fuchsia_remote_connection_test.dart
@@ -31,8 +31,7 @@
       const String interface = 'eno1';
       // Adds some extra junk to make sure the strings will be cleaned up.
       when(mockRunner.run(typed(any)))
-      .thenReturn(new Future<List<String>>.value(
-          <String>['123\n\n\n', '456  ', '789']));
+          .thenReturn(<String>['123\n\n\n', '456  ', '789']);
       when(mockRunner.address).thenReturn(address);
       when(mockRunner.interface).thenReturn(interface);
       int port = 0;
diff --git a/packages/fuchsia_remote_debug_protocol/test/src/runners/ssh_command_runner_test.dart b/packages/fuchsia_remote_debug_protocol/test/src/runners/ssh_command_runner_test.dart
index 83f7fbc..068ce16 100644
--- a/packages/fuchsia_remote_debug_protocol/test/src/runners/ssh_command_runner_test.dart
+++ b/packages/fuchsia_remote_debug_protocol/test/src/runners/ssh_command_runner_test.dart
@@ -40,8 +40,7 @@
     setUp(() {
       mockProcessManager = new MockProcessManager();
       mockProcessResult = new MockProcessResult();
-      when(mockProcessManager.run(typed(any))).thenReturn(
-          new Future<MockProcessResult>.value(mockProcessResult));
+      when(mockProcessManager.run(typed(any))).thenReturn(mockProcessResult);
     });
 
     test('verify interface is appended to ipv6 address', () async {
