If you can use ES2016(ES7) features (via Babeljs or a library), you can use async-await.
Using async-await you define a function as having asynchronous code and then use the await keyword to wait for a response from an async function. The async function needs to return a promise. Async-await lets you write async code as if it were synchronous.