diff --git a/src/storage_manager/model/RemoteStorage.js b/src/storage_manager/model/RemoteStorage.js index fdf53aed3..d8fe918e5 100644 --- a/src/storage_manager/model/RemoteStorage.js +++ b/src/storage_manager/model/RemoteStorage.js @@ -26,12 +26,17 @@ module.exports = require('backbone').Model.extend({ /** * Triggered on request error * @param {Object} err Error + * @param {Function} [clbErr] Error callback * @private */ - onError(err) { - const em = this.get('em'); - console.error(err); - em && em.trigger('storage:error', err); + onError(err, clbErr) { + if (clbErr) { + clbErr(err); + } else { + const em = this.get('em'); + console.error(err); + em && em.trigger('storage:error', err); + } }, /** @@ -50,28 +55,29 @@ module.exports = require('backbone').Model.extend({ em && em.trigger('storage:response', res); }, - store(data, clb) { + store(data, clb, clbErr) { const body = {}; for (let key in data) { body[key] = data[key]; } - this.request(this.get('urlStore'), { body }, clb); + this.request(this.get('urlStore'), { body }, clb, clbErr); }, - load(keys, clb) { - this.request(this.get('urlLoad'), { method: 'get' }, clb); + load(keys, clb, clbErr) { + this.request(this.get('urlLoad'), { method: 'get' }, clb, clbErr); }, /** * Execute remote request * @param {string} url Url * @param {Object} [opts={}] Options - * @param {[type]} [clb=null] Callback + * @param {Function} [clb=null] Callback + * @param {Function} [clbErr=null] Error callback * @private */ - request(url, opts = {}, clb = null) { + request(url, opts = {}, clb = null, clbErr = null) { const typeJson = this.get('contentTypeJson'); const headers = this.get('headers') || {}; const params = this.get('params'); @@ -125,6 +131,6 @@ module.exports = require('backbone').Model.extend({ : res.text().then(text => Promise.reject(text)) ) .then(text => this.onResponse(text, clb)) - .catch(err => this.onError(err)); + .catch(err => this.onError(err, clbErr)); } });