/** * Throttle the given function to only run `size` times in parallel. * Extra calls will be queued until one of the earlier calls completes. */ declare function throat( size: number, fn: (...args: TArgs) => Promise ): (...args: TArgs) => Promise; /** * Throttle the given function to only run `size` times in parallel. * Extra calls will be queued until one of the earlier calls completes. */ declare function throat( fn: (...args: TArgs) => Promise, size: number ): (...args: TArgs) => Promise; /** * Create a throttle that only allows `size` calls in parallel. * Extra calls will be queued until one of the earlier calls completes. * * To create an exclusive lock, just use a `size` of `1`. */ declare function throat( size: number ): ( fn: (...args: TArgs) => Promise, ...args: TArgs ) => Promise; export default throat;