#v1
Assuming
Promise.promisifyAll(asset.__proto__);
Promise.promisifyAll(permission.__proto__);
function addPermission(asset, userId) {
var permission = new Permission({ user: userId, asset: asset });
return permission.saveAsync().then(function(permission) {
return asset.getChildrenAsync().map(function(asset) {
return addPermission(asset, userId);
});
});
}
Assuming
function pcall(obj, method) {
var args = new Array(arguments.length - 1);
for (var k = 2; k < arguments.length; ++k) args[k-2] = arguments[k];
return new Promise(function(resolve, reject) {
args[arguments.length - 1] = function(err, res) {
if (err) reject(err); else resolve(res);
}
return method.apply(obj, args);
});
}
we get the slightly more annoying
function addPermission(asset, userId) {
var permission = new Permission({ user: userId, asset: asset });
return pcall(permission, permission.save).then(function(err, permission) {
return pcall(asset, asset.getChildren).map(function(asset) {
return addPermission(asset, userId);
});
});
}