blob: f53ec5f9e086ed967eeb054a3658b39fc169c7b3 [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
class TypeSafeFuture<T> implements Future<T> {
final Future _future;
Stream<T> asStream() => _future.then((value) => value as T).asStream();
Future<T> catchError(Function onError, {bool test(Object error)}) async =>
new TypeSafeFuture<T>(_future.catchError(onError, test: test));
Future/*<S>*/ then/*<S>*/(/*=S*/ onValue(T value), {Function onError}) =>
_future.then((value) => onValue(value as T), onError: onError);
Future<T> whenComplete(action()) =>
new TypeSafeFuture<T>(_future.whenComplete(action));
Future<T> timeout(Duration timeLimit, {onTimeout()}) =>
new TypeSafeFuture<T>(_future.timeout(timeLimit, onTimeout: onTimeout));