atombeak
Version:
Create asynchronous atomic functions!
27 lines (26 loc) • 699 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GOOD = 'GOOD';
function good(value, log) {
return { type: exports.GOOD, value: value, log: log };
}
exports.good = good;
exports.RETRY = 'RETRY';
function retry(log) {
return { type: exports.RETRY, log: log };
}
exports.retry = retry;
exports.Result = {
map: function (result, fn) {
if (result.type === exports.GOOD) {
return good(fn(result.value), result.log);
}
else if (result.type === exports.RETRY) {
return retry(result.log);
}
else {
var exhaustive = result;
throw new Error(exhaustive);
}
}
};