/// <summary> /// Rate limits a collection mapping. /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="U"></typeparam> /// <param name="arr"></param> /// <param name="limiter"></param> /// <param name="f"></param> /// <returns></returns> public static Task <U[]> Select <T, U>( this IEnumerable <T> arr, ILimiter limiter, Func <T, int, Task <U> > f ) => arr.Select((x, i) => limiter.Run(() => f(x, i))).WhenAll();