| Index: sdk/lib/async/future.dart
|
| diff --git a/sdk/lib/async/future.dart b/sdk/lib/async/future.dart
|
| index f18cb1dd73423874eefbcfe98660ffef6c17fb39..5c3e046c86fdf8cd3c5e44ed624db6d4e2d16b0f 100644
|
| --- a/sdk/lib/async/future.dart
|
| +++ b/sdk/lib/async/future.dart
|
| @@ -291,25 +291,36 @@ abstract class Future<T> {
|
| }
|
|
|
| /**
|
| - * When this future completes with a value, then [onValue] is called with this
|
| - * value. If [this] future is already completed then the invocation of
|
| - * [onValue] is delayed until the next event-loop iteration.
|
| - *
|
| - * Returns a new [Future] `f` which is completed with the result of
|
| - * invoking [onValue] (if [this] completes with a value) or [onError] (if
|
| - * [this] completes with an error).
|
| - *
|
| - * If the invoked callback throws an exception, the returned future `f` is
|
| - * completed with the error.
|
| - *
|
| - * If the invoked callback returns a [Future] `f2` then `f` and `f2` are
|
| - * chained. That is, `f` is completed with the completion value of `f2`.
|
| - *
|
| - * The [onError] callback must be of type `void onError(error)` or
|
| - * `void onError(error, StackTrace stackTrace)`. If [onError] accepts
|
| - * two arguments it is called with the stack trace (which could be `null` if
|
| - * the stream itself received an error without stack trace).
|
| - * Otherwise it is called with just the error object.
|
| + * Register callbacks to be called when this future completes.
|
| + *
|
| + * When this future completes with a value,
|
| + * the [onValue] callback will be called with that value.
|
| + * If this future is already completed, the callback will not be called
|
| + * immediately, but will be scheduled in a later microtask.
|
| + *
|
| + * If [onError] is provided, and this future completes with an error,
|
| + * the `onError` callback is called with that error its stack trace.
|
| + * The `onError` callback must accept either one argument or two arguments.
|
| + * If `onError` accepts two arguments,
|
| + * it is called with both the error and the stack trace,
|
| + * otherwise it is called with just the error object.
|
| + *
|
| + * Returns a new [Future]
|
| + * which is completed with the result of the call to `onValue`
|
| + * (if this future completes with a value)
|
| + * or to `onError` (if this future completes with an error).
|
| + *
|
| + * If the invoked callback throws,
|
| + * the returned future is completed with the thrown error
|
| + * and a stack trace for the error.
|
| + * In the case of `onError`,
|
| + * if the exception thrown is the same as the argument to `onError`,
|
| + * the throw is considered a rethrow,
|
| + * and the original stack trace is used instead.
|
| + *
|
| + * If the callback returns a [Future],
|
| + * the future returned by `then` will be completed with
|
| + * the same result of the future returned by the callback.
|
| *
|
| * If [onError] is not given it forwards the error to `f`.
|
| *
|
| @@ -322,20 +333,29 @@ abstract class Future<T> {
|
| /**
|
| * Handles errors emitted by this [Future].
|
| *
|
| - * Returns a new [Future] `f`.
|
| + * This is the asynchronous equivalent of a "catch" block.
|
| + *
|
| + * Returns a new [Future] that will be completed with either the result of
|
| + * this future or the result of calling the `onError` callback.
|
| + *
|
| + * If this future completes with a value,
|
| + * the returned future completes with the same value.
|
| *
|
| - * When [this] completes with a value, the value is forwarded to `f`
|
| - * unmodified. That is, `f` completes with the same value.
|
| + * If this future completes with an error,
|
| + * then [test] is first called with the error value.
|
| *
|
| - * When [this] completes with an error, [test] is called with the
|
| - * error's value. If the invocation returns [true], [onError] is called with
|
| - * the error. The result of [onError] is handled exactly the same as for
|
| - * [then]'s [onError].
|
| + * If `test` returns false, the exception is not handled by this `catchError`,
|
| + * and the returned future completes with the same error and stack trace
|
| + * as this future.
|
| *
|
| - * If [test] returns false, the exception is not handled by [onError], but is
|
| - * thrown unmodified, thus forwarding it to `f`.
|
| + * If `test` returns `true`,
|
| + * [onError] is called with the error and possibly stack trace,
|
| + * and the returned future is completed with the result of this call
|
| + * in exactly the same way as for [then]'s `onError`.
|
| *
|
| - * If [test] is omitted, it defaults to a function that always returns true.
|
| + * If `test` is omitted, it defaults to a function that always returns true.
|
| + * The `test` function should not throw, but if it does, it is handled as
|
| + * if the the `onError` function had thrown.
|
| *
|
| * Example:
|
| *
|
|
|