https://www.mybluelinux.com/async-vs-defer-in-javascript-which-is-better/