| Index: lib/runtime/dart_sdk.js | 
| diff --git a/lib/runtime/dart_sdk.js b/lib/runtime/dart_sdk.js | 
| index 83c6a079994205934655f5f785766889845cf6ec..2bf3a3670528a403fdb1b9892be69cb3cae128fc 100644 | 
| --- a/lib/runtime/dart_sdk.js | 
| +++ b/lib/runtime/dart_sdk.js | 
| @@ -59,6 +59,18 @@ dart_library.library('dart_sdk', null, /* Imports */[ | 
| dart.getImplements = function(clazz) { | 
| return clazz[dart.implements]; | 
| }; | 
| +  dart.flattenFutures = function(builder) { | 
| +    function flatten(T) { | 
| +      if (!T) return builder(dart.dynamic); | 
| +      let futureClass = dart.getGenericClass(async.Future); | 
| +      if (dart.getGenericClass(T) == futureClass) { | 
| +        let args = dart.getGenericArgs(T); | 
| +        if (args) return builder(args[0]); | 
| +      } | 
| +      return builder(T); | 
| +    } | 
| +    return flatten; | 
| +  }; | 
| dart.generic = function(typeConstructor) { | 
| let length = typeConstructor.length; | 
| if (length < 1) { | 
| @@ -14900,7 +14912,7 @@ dart_library.library('dart_sdk', null, /* Imports */[ | 
| }); | 
| const _completeWithValue = Symbol('_completeWithValue'); | 
| let const$3; | 
| -  async.Future$ = dart.generic(T => { | 
| +  async.Future$ = dart.flattenFutures(dart.generic(T => { | 
| class Future extends core.Object { | 
| static new(computation) { | 
| let result = new (async._Future$(T))(); | 
| @@ -15083,7 +15095,7 @@ dart_library.library('dart_sdk', null, /* Imports */[ | 
| names: ['wait', 'any', 'forEach', 'doWhile'] | 
| }); | 
| return Future; | 
| -  }); | 
| +  })); | 
| async.Future = async.Future$(); | 
| dart.defineLazy(async.Future, { | 
| get _nullFuture() { | 
|  |