co-try-catch
Version:
go-lang-style error handling using co library
44 lines (37 loc) • 639 B
JavaScript
;
const co = require('co');
const TryCatchResult = require('./try-catch-result');
module.exports = {
tryCatch,
TryCatchResult
};
/**
*
* @param gen
* @returns {TryCatchResult}
*/
function tryCatch(gen) {
return co(gen).then(success).catch(fail);
}
/**
*
* @param result
* @returns {*}
*/
function success(result) {
if (result instanceof TryCatchResult) {
return result;
}
return new TryCatchResult(null, result, false);
}
/**
*
* @param err
* @returns {*}
*/
function fail(err) {
if (!err) {
err = new Error('unknown error occurred');
}
return new TryCatchResult(err, null, true);
}