 future is completed with the thrown error
and a stack trace for the error.
In the case of <code>onError</code>,
if the exception thrown is <code>identical</code> to the error argument to <code>onError</code>,
the throw is considered a rethrow,
and the original stack trace is used instead.</p>
<p>If the callback returns a <a href="dart-async/Future-class.html">Future</a>,
the future returned by <code>then</code> will be completed with
the same result as the future returned by the callback.</p>
<p>If <code>o