Index: pkg/dev_compiler/lib/js/es6/dart_sdk.js |
diff --git a/pkg/dev_compiler/lib/js/es6/dart_sdk.js b/pkg/dev_compiler/lib/js/es6/dart_sdk.js |
index 5f47f0bd058f4184f61ccafb151dc4fa250ba648..69f6bdaf152affabf4f78f1e1c96645b1f1bf5e8 100644 |
--- a/pkg/dev_compiler/lib/js/es6/dart_sdk.js |
+++ b/pkg/dev_compiler/lib/js/es6/dart_sdk.js |
@@ -1862,11 +1862,12 @@ dart.async = function(gen, T, ...args) { |
if (ret.done) return ret.value; |
let future = ret.value; |
if (!dart.is(future, dart.getGenericClass(async.Future))) { |
- future = async.Future.value(future); |
+ var result = future; |
+ future = async.Future.microtask(() => result); |
} |
return future.then(dart.dynamic)(onValue, {onError: onError}); |
} |
- return dart.getGenericClass(async.Future)(T).new(function() { |
+ return dart.getGenericClass(async.Future)(T).microtask(function() { |
iter = gen.apply(null, args)[Symbol.iterator](); |
return onValue(); |
}); |