diff --git a/lib/client/operation.js b/lib/client/operation.js index 2bf47412..2471ac7f 100644 --- a/lib/client/operation.js +++ b/lib/client/operation.js @@ -49,18 +49,19 @@ spero(function() { var parse = function(fn) { return function(data, callback) { - var progress = function(value) { + var listeners = { + progress: function(value) { Images.setProgress(value); }, - end = function() { + end: function() { callback(); - spero.removeListener('progress', progress); - spero.removeListener('error', error); - spero.removeListener('end', end); + events.forEach(function(name) { + spero.removeListener(name, listeners[name]); + }); }, - error = function(data) { + error: function(data) { var msg = data + '\n Continue?', is = confirm(msg); @@ -68,15 +69,17 @@ spero.continue(); else spero.abort(); - }; + } + }, + events = Object.keys(listeners); Images.show('top'); fn(data.from, data.to, data.names); - spero.on('progress', progress); - spero.on('end', end); - spero.on('error', error); + events.forEach(function(name) { + spero.on(name, listeners[name]); + }); }; };