'use strict';
const promisify = require('es6-promisify');
const jayson = require('../../../');
const promiseUtils = require('../utils');
/**
 * Constructor for a Jayson Promise Client
 * @see Client
 * @class PromiseClient
 * @extends Client
 * @return {PromiseClient}
 */
const PromiseClient = function(server, options) {
  if(!(this instanceof PromiseClient)) {
    return new PromiseClient(server, options);
  }
  jayson.Client.apply(this, arguments);
  this.request = promiseUtils.wrapClientRequestMethod(this.request.bind(this));
};
require('util').inherits(PromiseClient, jayson.Client);
/**
 * @type PromiseClientHttp
 * @static
 */
PromiseClient.http = require('./http');
/**
 * @type PromiseClientHttps
 * @static
 */
PromiseClient.https = require('./https');
/**
 * @type PromiseClientTls
 * @static
 */
PromiseClient.tls = require('./tls');
/**
 * @type PromiseClientTcp
 * @static
 */
PromiseClient.tcp = require('./tcp');
module.exports = PromiseClient;