Classes that implement `Future` should change the signature ot `.then` to be ```dart then(FutureOr<S> onValue(T x), {Function onError}) ``` to ensure that inference will continue to work for calls to `.then` and to get better error checking.