Update if you don't want to change the structure of your templates so they can load better asynchronously then you may have to fall back a recursive loading approach. This will be relatively akin to synchronous loading of resources as you will be ensuring only one request is running at a time.
var templates = [
'header',
'about'
/*....*/
];
//load up your templates 1 by 1 in a recursive loop
(function loadNextTemplate(index) {
if(index >= templates.length) return; //base case
$.getScript("js/modules/" + templates[index] + ".js")
.then(function() {
Init();
loadNextTemplate(index + 1);
});
})(0);