I program a lot of APIs. Asynchronous programming is one of the basic concepts of programming APIs, like DOM manipulation in the browser. When programming APIs, one has to get used to interacting with architectural pieces or 3rd party resources outside of the core program. Engaging with the asynchronous nature of APIs can be very frustrating, but it's the part that makes a program relevant. Connecting with elements outside of itself is at the heart of what APIs are designed to do.
Work in Progress
None of these solutions are perfect. The syntax of Callbacks is complicated. The verbosity of Promises is cumbersome. Async/await is not an independent solution.