https://mabry.dev/posts/javascript-closures-guide/