Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including ckt-breaker with all npm packages installed. Try it out:

var cktBreaker = require("ckt-breaker")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

ckt-breaker v1.0.0

Tiny circuit breaker implementation in js with zero deps

ckt-breaker Build Status Coverage Status

Tiny circuit breaker implementation. Wrapped service must return Promise.

Requirements

  • node v6+
  • npm 3+

Install

$ npm install --save ckt-breaker

Usage

const cktBreaker = require('ckt-breaker');
// Function that hits some service 
const fn = () => Promise.reject('I got nothing');

const ckt = cktBreaker(fn, {
    retry: 10000, // time in ms after which to retry hitting fn
    timeout: 1000, // time in ms to timeout if fn takes longer than that
    maxError: 10, // Max no of errors
    maxTime: 1000, // time in ms in which maxError occurs
    fallback: () => Promise.reject(new Error('Service Currently unavailable')),
});

ckt.fire('hello world') // Safe doesn't overload the remote service

API

cktBreaker(fn, {options})

fn

Type: function

A promise returning function

options

retry

Type: integer
Default: 10000

Time in ms after which to retry hitting fn

timeout

Type: integer
Default: 0

Time in ms to timeout fn if fn takes longer than that. By default this is disabled (0).

maxError

Type: integer
Default: 10

No of errors in maxTime time to occur before breaking the circuit

maxTime

Type: integer
Default: 1000

Time Frame to consider maxError no of error to break the circuit

fallback

Type: function
Default: () => Promise.reject(new Error('Service Currently unavailable')

Fallback function to call when circuit is broken

Methods

fire

const ckt = cktBreaker(fn); 
ckt.fire([1,2,3]) // Any args taken by fn;

Function that runs wrapped fn and passes over arguments given to it

Events

open

Fired when circuit is opened

closed

Fired when circuit is closed

License

MIT © Nikhil Srivastava

Metadata

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free