Revert "Revert "Roll engine to fed2ea458ed49088d33eddabc546ba56d600c717 (includes dart roll) again (#19277)" (#19295)" (#19322)

This reverts commit cc122f1672d4b7e0c0734be34a155997463e3b56.
diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart
index d2c05d8..cc2767c 100644
--- a/packages/flutter_tools/lib/src/vmservice.dart
+++ b/packages/flutter_tools/lib/src/vmservice.dart
@@ -161,8 +161,10 @@
         if (expression is! String || expression.isEmpty)
           throw new rpc.RpcException.invalidParams(
               'Invalid \'expression\': $expression');
-        final List<String> definitions = params['definitions'].asList;
-        final List<String> typeDefinitions = params['typeDefinitions'].asList;
+        final List<String> definitions =
+            new List<String>.from(params['definitions'].asList);
+        final List<String> typeDefinitions =
+            new List<String>.from(params['typeDefinitions'].asList);
         final String libraryUri = params['libraryUri'].asString;
         final String klass = params['klass'].exists ? params['klass'].asString : null;
         final bool isStatic = params['isStatic'].asBoolOr(false);
@@ -350,6 +352,7 @@
       // If the VM doesn't yet have a view, wait for one to show up.
       printTrace('Waiting for Flutter view');
       await new Future<Null>.delayed(new Duration(seconds: attemptSeconds));
+      await getVM();
       await vm.refreshViews();
     }
   }