define(function () { return function ($element, name) { return new Promise(function (resolve, reject) { var api = $element.data(name); if (api) { resolve(api); } else { $element.one(name + '.ready', function () { resolve($element.data(name)); }); } }); }; });