'use strict';
const ClientBrowser = require('../../../../lib/client/browser/index');
const promiseUtils = require('../../utils');
/**
 * Constructor for a Jayson Promise Browser Client that does not depend any node.js core libraries
 * @class PromiseClientBrowser
 * @extends ClientBrowser
 * @return {PromiseClientBrowser}
 */
const PromiseClientBrowser = function(callServerPromise, options) {
  if(!(this instanceof PromiseClientBrowser)) {
    return new PromiseClientBrowser(callServerPromise, options);
  }
  const callServer = function (request, callback) {
    callServerPromise(request).then(res => callback(null, res), err => callback(err));
  };
  ClientBrowser.call(this, callServer, options);
  this.request = promiseUtils.wrapClientRequestMethod(this.request.bind(this));
};
// let's hope this ancient method of inheriting works the way I remember it.
PromiseClientBrowser.prototype = ClientBrowser.prototype;
module.exports = PromiseClientBrowser;