https://bilalkazim.medium.com/javascript-callbacks-and-promises-clear-and-simple-definition-a2fcb336c85b