Override this to have some logic before and after the reduce method. Specifically, this method is called after before and before after: before -> wrapReduce -> after
Future<(T, R)> wrapReduce() => reduce();