No Plugins; Monolithic

    TypeScript icon, indicating that this package has built-in type declarations

    1.2.1 • Public • Published


    Profuse is an implementation of the "circuit breaker" pattern, using promises instead of callbacks. It's written in typescript so you can use type-safe checks if you want to (but you don't have to).

    A "circuit breaker" wraps a remote call (for example, to a database or a REST service), watching for exceptions. If too many exceptions happen, the breaker trips.

    Once tripped, all calls will fail immediately. After a while, the breaker will move into probation mode, where a single success will reset it back to normal mode, or a single failure will cause it to trip again. This allows failing remote services to "fail fast" and stops your client from pummeling them while they're down.


    const breaker = new CircuitBreaker("database", { tripRate: 0.95 }); => {
      return db.getUser(userId);
    }).then(user => ... );

    The options are documented in profuse.ts.

    There is also a callback version, if you aren't comfortable with promises yet, or are targeting older platforms. The syntax is a bit more confusing because of the inside-out nature of callbacks: It accepts a function that takes a callback, and your callback.

    const breaker = new CircuitBreaker("database", { tripRate: 0.95 });
    breaker.doCallback(cb =>, flags, cb), (error, file) => {
      // do things with file

    If you prefer, you can use the lower-level API:

    const breaker = new CircuitBreaker("database", { tripRate: 0.95 });
    breaker.tryStart();  // throws an exception if the circuit breaker has tripped, flags, (error, file) => {
      breaker.registerResult(error == null);
      // do things with file


    In normal mode, trip if:

    • less than X percent (tripRate) of the last N requests (window) succeeded
    • too many (maxConcurrent) concurrent requests (may indicate a too-long or missing timeout)

    In tripped mode, go into probation if:

    • time has passed (checkInterval)

    In probation mode:

    • any successful request: go back to normal mode
    • any failed request: go back to tripped mode


    $ npm i
    $ npm test


    Apache 2 (open-source) license, included in LICENSE.txt.


    @robey - Robey Pointer


    npm i profuse

    DownloadsWeekly Downloads






    Unpacked Size

    23.9 kB

    Total Files


    Last publish


    • robey