@override Task<A> chainFirst<B>(covariant Task<B> Function(A a) chain) => flatMap((a) => chain(a).map((b) => a));