There are precedents for using a noun in the Framework, e.g.
Enumerable.Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector)
Enumerable.Count<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
Enumerable.GroupBy<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector)
ConcurrentDictionary<TKey,TValue>.GetOrAdd(TKey key,
Func<TKey, TValue> valueFactory);
The noun is often an appropriate verb with an agentive suffix.
In your example I would use something like loader
or possibly valueFactory
. I personally don’t like cacheLoader
because presumably it’s the caller rather than the delegate that does the work of inserting in the cache.