-/**
- * Limits the invocations of a function in a given time frame.
- *
- * The debounce function wrapper should be used sparingly. One clear use case
- * is limiting the invocation of a callback attached to the window resize event.
- *
- * Before using the debounce function wrapper, consider first whether the
- * callback could be attached to an event that fires less frequently or if the
- * function can be written in such a way that it is only invoked under specific
- * conditions.
- *
- * @param {function} func
- * The function to be invoked.
- * @param {number} wait
- * The time period within which the callback function should only be
- * invoked once. For example if the wait period is 250ms, then the callback
- * will only be called at most 4 times per second.
- * @param {bool} immediate
- * Whether we wait at the beginning or end to execute the function.
- *
- * @return {function}
- * The debounced function.
- */