- `await` suspends the current *function* evaluations, including all control structures. therefore in `.forEach` it does not wait for callback to finish before iterating to next.https://stackoverflow.com/questions/37576685/using-async-await-with-a-foreach-loop
- * **throttle**: delay executing a function and ensure that the function gets called at most once per specified period.* **debounce**: the function is called after the caller stops calling the function after a specified period. (combines multiple calls so that exactly one signal is sent for an event that may be happening several times.