docs: function (url, site, ctx, loadFunc) {
  		return $.Deferred(function (dfd) {
  
  			ctx = ctx || SP.ClientContext.get_current();
  			site = site || ctx.get_site();
  			var web = (url) ? (typeof url == "string") ? site.openWeb(url) : url : ctx.get_web();
  			var res = loadFunc && loadFunc(web) || ctx.load(web);
  
  			ctx.executeQueryAsync(
  				function (sender, args) {
  					dfd.resolve(web, res, sender, args);
  				},
  				function onError(sender, args) {
  					dfd.reject({ sender: sender, args: args });
  					//dfd.reject('Request failed ' + args.get_message() + '\n' + args.get_stackTrace());
  				});
  		}).promise();
  	}