var App = App || {};

App.Promise = (function(jQuery) {

	function make(callback)
	{
		var deferred = jQuery.Deferred();
		callback(deferred.resolve, deferred.reject);
		return deferred.promise();
	}

	function wait(promise) {
		return jQuery.when(promise);
	}

	function waitAll() {
		return jQuery.when.apply(jQuery, arguments);
	}

	return {
		make: make,
		wait: wait,
		waitAll: waitAll,
	};

});

App.DI.registerSingleton('promise', App.Promise);