Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

disyuntor

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

disyuntor - npm Package Compare versions

Comparing version 3.3.2 to 3.4.0

9

lib/Disyuntor.js

@@ -54,2 +54,5 @@ "use strict";

}
if (typeof this.params.onClose === 'function') {
this.on('close', this.params.onClose);
}
}

@@ -81,2 +84,3 @@ get timeout() {

const state = this.state;
const cooldown = this.currentCooldown;
if (state === State.Open) {

@@ -95,2 +99,5 @@ throw new DisyuntorError_1.DisyuntorError(`${this.params.name}: the circuit-breaker is open`, this.state);

const result = yield Promise.race([timeout, promise]);
if (state === State.HalfOpen) {
this.emit('close', cooldown);
}
//If it worked we need to reset it, regardless if is half-open or closed,

@@ -154,2 +161,2 @@ //the failures counter is meant to accumulate failures in a row.

exports.wrapPromise = wrapPromise;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzeXVudG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Rpc3l1bnRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQXFDO0FBQ3JDLDRDQUFtQjtBQUduQixxREFBa0Q7QUF3S3pDLHlCQXhLQSwrQkFBYyxDQXdLQTtBQXZLdkIsdUNBQW9EO0FBR3BELE1BQU0sUUFBUSxHQUFHO0lBQ2YsT0FBTyxFQUFNLElBQUk7SUFDakIsV0FBVyxFQUFFLENBQUM7SUFDZCxRQUFRLEVBQUssS0FBSztJQUNsQixPQUFPLEVBQU0sR0FBRyxFQUFFLENBQUMsSUFBSTtDQUN4QixDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBRXpELElBQUssS0FJSjtBQUpELFdBQUssS0FBSztJQUNSLDBCQUFpQixDQUFBO0lBQ2pCLHNCQUFhLENBQUE7SUFDYiwrQkFBc0IsQ0FBQTtBQUN4QixDQUFDLEVBSkksS0FBSyxLQUFMLEtBQUssUUFJVDtBQUlELE1BQWEsU0FBVSxTQUFRLHFCQUFZO0lBWXpDLFlBQVksTUFBMEI7UUFDcEMsS0FBSyxFQUFFLENBQUE7UUFWVCxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBVXRCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWxELElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFD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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzeXVudG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Rpc3l1bnRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQXFDO0FBQ3JDLDRDQUFtQjtBQUduQixxREFBa0Q7QUFrTHpDLHlCQWxMQSwrQkFBYyxDQWtMQTtBQWpMdkIsdUNBQW9EO0FBR3BELE1BQU0sUUFBUSxHQUFHO0lBQ2YsT0FBTyxFQUFNLElBQUk7SUFDakIsV0FBVyxFQUFFLENBQUM7SUFDZCxRQUFRLEVBQUssS0FBSztJQUNsQixPQUFPLEVBQU0sR0FBRyxFQUFFLENBQUMsSUFBSTtDQUN4QixDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBRXpELElBQUssS0FJSjtBQUpELFdBQUssS0FBSztJQUNSLDBCQUFpQixDQUFBO0lBQ2pCLHNCQUFhLENBQUE7SUFDYiwrQkFBc0IsQ0FBQTtBQUN4QixDQUFDLEVBSkksS0FBSyxLQUFMLEtBQUssUUFJVDtBQUlELE1BQWEsU0FBVSxTQUFRLHFCQUFZO0lBWXpDLFlBQVksTUFBMEI7UUFDcEMsS0FBSyxFQUFFLENBQUE7UUFWVCxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBVXRCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWxELElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFD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

@@ -36,2 +36,7 @@ export declare namespace Options {

/**
* Callback executed every time the circuit-breaker closes after half-open state.
* @param currentCooldown The amount of milliseconds before closing back.
*/
onClose?(currentCooldown: number): any;
/**
* Callback executed to verify if an error should trigger the circuit-breaker logic.

@@ -38,0 +43,0 @@ * @param {Error} err the error to verify.

2

package.json
{
"name": "disyuntor",
"description": "A circuit-breaker implementation with exponential backoff.",
"version": "3.3.2",
"version": "3.4.0",
"author": "José F. Romaniello <jfromaniello@gmail.com> (http://joseoncode.com)",

@@ -6,0 +6,0 @@ "repository": {

@@ -53,2 +53,6 @@ [![Build Status](https://travis-ci.org/auth0/disyuntor.svg?branch=master)](https://travis-ci.org/auth0/disyuntor)

onClose: (cooldown) => {
console.log(`dns.lookup circuit closed after ${cooldown}ms.`;
}
// //optional callback to prevent some errors to trigger the disyuntor logic

@@ -55,0 +59,0 @@ // //in this case ENOTFOUND is passed to the callback and will

@@ -149,2 +149,62 @@ const Disyuntor = require('../lib/Disyuntor').Disyuntor;

it('should call onClose after closing in half open state', (done) => {
let closeEvents = [];
protectedFunction = disyuntor({
name: 'test.func',
timeout: '10ms',
maxFailures: 2,
cooldown: 200,
maxCooldown: 400,
onTrip: (err, failures, cooldown) => tripCalls.push({err, failures, cooldown}),
onClose: (cooldown) => { closeEvents.push({ cooldown}); }
}, function(cb) {
if (error) {
return cb(error);
}
return cb(null, { succeed: true });
});
async.series([
// Open the circuit
cb => {
error = new Error('error-1');
protectedFunction((err, r) => cb(null, { err, r }))
},
cb => {
error = new Error('error-2');
protectedFunction((err, r) => cb(null, { err, r }))
},
cb => {
error = new Error('error-3');
protectedFunction((err, r) => cb(null, { err, r }))
},
// Wait cooldown
cb => setTimeout(cb, 250),
// This should move state from half open to closed
cb => {
error = null;
protectedFunction((err, r) => cb(null, { err, r }))
},
// Fail again, this should not open the circuit because failures should
// have reset
cb => {
error = new Error('error-4');
protectedFunction((err, r) => cb(null, { err, r }))
},
], (err) => {
assert.ifError(err);
assert.equal(closeEvents.length, 1);
assert.deepEqual(closeEvents[0], { cooldown: 200, });
done();
});
});
it('should backoff on multiple failures', function (done) {

@@ -374,3 +434,3 @@ async.series([

describe('intermitent failures', function() {
it('should count failures in a row', async function() {
it('should count failures in a row', function() {
const disyuntor = new Disyuntor({

@@ -382,21 +442,18 @@ name: 'disyuntor test',

//fail
try {
await disyuntor.protect(() => {
return disyuntor.protect(() => {
throw new Error('error 1');
}).catch(() => {
//works
return disyuntor.protect(() => Promise.resolve(1));
}).then(() => {
//fail
return disyuntor.protect(() => {
throw new Error('error 1');
})
} catch(err){}
});
}).catch(() => {
disyuntor.protect(() => Promise.resolve(1));
});
//works
await disyuntor.protect(async () => 1);
//fails
try {
await disyuntor.protect(() => {
throw new Error('error 1');
})
} catch(err){}
await disyuntor.protect(async () => 1);
});
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc