JSFiddle - React, Tailwind, and code Playground

JavaScript

function doAjax(file) {
    var defer = $.Deferred();
    var fakeFile = file;
    var data = null;

    ajax();

    function ajax() {
        return $.get(fakeFile)
            .done(function(data) {
                data = data;
                defer.resolve(data);
            })
            .fail(function() {
                defer.fail();
            })
    }
    return defer.promise(data);
}

var thisWillWork = '';

doAjax(thisWillWork)
    .done(function() {
        console.log('done')
    })
    .fail(function() {
        console.error('fail')
    })
    .always(function() {
        console.log('always')
    })

var thisWontWork = 'fakeFile.html'
doAjax(thisWontWork)
    .done(function() {
        console.log('done')
    })
    .fail(function() {
        console.error('fail')
    })
    .always(function() {
        console.log('always')
    })