While "async" programming is very hard to learn, it comes naturally in JavaScript. For example button.onclick = buttonClickedFunction
And learning "async" programming is a well worth investment. I've spent 10 years as a coach/trainer and one strategy I used was to start with the hard stuff, if they master for example the "snatch" (olympic lifting) all other gym exercises will be easy. And it's the same thing with JavaScript. If you master "async"/events then everything else will be easy.