var CircuitBreakerFactory = require( "@bennadel/circuit-breaker" ).CircuitBreakerFactory;

var circuitBreaker = CircuitBreakerFactory.create();

// Invoke as closure.
circuitBreaker.execute(
	function() {
		return( upstreamResource.load() );
	}
);

// Invoke as closure with context and arguments.
circuitBreaker.executeInContext(
	upstreamResource,
	function( param1, param2 ) {
		return( this.load( param1, param2 ) );
	},
	[ "arg1", "arg2" ]
);

// Invoke as method on an object.
circuitBreaker.executeMethod( upstreamResource, "load", [ "arg1", "arg2" ] );