class Foo<T> {
  final Future<dynamic> Function() quux;
  T t;
  Foo(this.quux, this.t);
  Future<T> call() => quux().then<T>((_) => t);
}

class Bar {
  Foo<Baz> qux;
  Future<void> quuz() =>
      qux().then((baz) => corge(baz)).then((grault) => garply(grault));
  Grault corge(Baz baz) => null;
  void garply(Grault grault) {}
}

class Baz {}

class Grault {}

main() {}
