Yes, it absolutely does matter. Chaining promises together, running them in parallel with Promise.all, and the abortable-promise pattern, make developing (and especially debugging!) much much easier than having to deal with callback hell.
zam.fadeIn(el, duration)
.then(zam.ajax(url))
.then(response => response.json())
.then(json => el.innerHTML = json.results[2].message)
This code is nearly self-documenting, is easier for a transpiler to handle, and doesn't scream "refactor me!" right after you've deployed your app.