Deferred and Ajax tests

JavaScript

var api = (function() {
    var jqXHR = null;

    return function(options) {
        var url = options.url;

        if (jqXHR && jqXHR.state() === 'pending') {
            console.log("ABORTING OLD AJAX");
            //Calls any error / fail callbacks of jqXHR
            jqXHR.abort();
        }

        deferred = $.Deferred(function() {
            this.done(options.success);
            this.fail(options.error);
        });

        jqXHR = $.ajax({
            url: url,
            data: options.toSend,
            dataType: 'jsonp'
        });

        jqXHR.done(function(data, textStatus, jqXHR) {
            console.log( "Return data", data );
            if (data.f && data.f !== "false") {
                deferred.resolve();
            } else {
                deferred.reject();
            }
        });

        //http://api.jquery.com/deferred.promise/        
        return deferred.promise();
    };
})();

function options(foo, bar) {
    this.url = "http://jsfiddle.net/echo/jsonp/";
    this.toSend = {
        f: foo,
        b: bar,
        delay: 5
    };
    this.success = function() {
        console.log("OPTION SUCCESS");
    };
    this.error = function() {
        console.log("a;dfjaskl;fj?");
    };
}
var optsOne = new options(true, "one");
var myFirstDef = api(optsOne);
var optsTwo = new options(true, "two");
var mySecDef;
setTimeout(function() {
    mySecDef = api(optsTwo);
    myFirstDef = null;
    console.log("FIRST DEF: ", myFirstDef);
}, 2000);