<T extends (...args: Array<any>) => Promise<void>>(cb: T, { delay, when }?: ThrottleOptions): T Throttles calls to a callback that returns a void promise.
Immediately invokes the callback on the first call unless leading=false.
If the throttled function is called while the promise is already pending,
the call is queued to run after the pending promise completes plus delay,
and only the last call is invoked.
In other words, all calls and their args are discarded
during the pending window except for the most recent.
Unlike debouncing, this calls the throttled callback
both on the leading and trailing edges of the delay window by default,
and this can be customized by setting leading or `trailing.
It also differs from a queue where every call to the throttled callback eventually runs.
cb
T__1
EMPTY_OBJECTreturns
T same as cb