RORO: https://medium.com/free-code-camp/elegant-patterns-in-modern-javascript-roro-be01e7669cbd
Ice Factory: https://medium.com/free-code-camp/elegant-patterns-in-modern-javascript-ice-factory-4161859a0eee
https://www.robinwieruch.de/javascript-naming-conventions
Debouncing enforces that a function not be called again until a certain amount of time has passed without it being called. As in “execute this function only if 100 milliseconds have passed without it being called.”
Throttling enforces a maximum number of times a function can be called over time. As in “execute this function at most once every 100 milliseconds.”
Read more: https://css-tricks.com/the-difference-between-throttling-and-debouncing/
https://overreacted.io/on-let-vs-const/