https://neuraldemy.com/memoization-in-javascript/
Understanding Memoization in JavaScript: Optimizing Function Calls with Caching