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<R> wrapReduce() => reduce();