Would prefer T instead of TResult which we use if some return of the callback is driving the generic variable