lib/Commander.js
function Commander(client, options) {
		if (!(this instanceof Commander)) {
			return new Commander(client, options);
		}
		
		EventEmitter2.call(this);
		this.setMaxListeners(0);
		
		options = options || {};
		
		options.retryStrategy = options.retryStrategy || defaultRetry;
		
		this._client = client;
		this._options = options;
	}
function Commander(client, options) {
		if (!(this instanceof Commander)) {
			return new Commander(client, options);
		}
		
		EventEmitter2.call(this);
		this.setMaxListeners(0);
		
		options = options || {};
		
		options.retryStrategy = options.retryStrategy || defaultRetry;
		
		this._client = client;
		this._options = options;
	}
A Commander is a layer over a JSON-RPC 2.0 Client which controls automatic retries of method calls.
@constructor
@param {JSONRPC} client - The underlying JSON-RPC client to use. Should expose an API equivalent to the one found in the JSONRPC module in this package.
@param {Object} [options] - Tunables that control the behaviour of this automatic layer.
@param {function} [options.retryStrategy] - A function that should accept no arguments and return a function which, when called with arguments (next:function, error:Error), will call that "next" function some time in the future, or reject with the passed error if retry is denied.