THRIFT-5811: Update eslint & prettier
Client: js
Patch: Cameron Martin

This closes #3087
diff --git a/lib/js/Gruntfile.js b/lib/js/Gruntfile.js
index 9771314..089ef8f 100644
--- a/lib/js/Gruntfile.js
+++ b/lib/js/Gruntfile.js
@@ -5,47 +5,48 @@
 // Grunt Setup -  npm install  //reads the ./package.json and installs project dependencies
 // Run grunt -    npx grunt  // uses project-local installed version of grunt (from package.json)
 
-module.exports = function(grunt) {
-  'use strict';
+module.exports = function (grunt) {
+  "use strict";
 
   grunt.initConfig({
-    pkg: grunt.file.readJSON('package.json'),
+    pkg: grunt.file.readJSON("package.json"),
     concat: {
       options: {
-        separator: ';'
+        separator: ";",
       },
       dist: {
-        src: ['src/**/*.js'],
-        dest: 'dist/<%= pkg.name %>.js'
-      }
+        src: ["src/**/*.js"],
+        dest: "dist/<%= pkg.name %>.js",
+      },
     },
-    jsdoc : {
-        dist : {
-            src: ['src/*.js', './README.md'],
-            options: {
-              destination: 'doc'
-            }
-        }
+    jsdoc: {
+      dist: {
+        src: ["src/*.js", "./README.md"],
+        options: {
+          destination: "doc",
+        },
+      },
     },
     uglify: {
       options: {
-        banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
+        banner:
+          '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n',
       },
       dist: {
         files: {
-          'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
-        }
-      }
+          "dist/<%= pkg.name %>.min.js": ["<%= concat.dist.dest %>"],
+        },
+      },
     },
     shell: {
       InstallThriftJS: {
-        command: 'cp src/thrift.js test/build/js/thrift.js'
+        command: "cp src/thrift.js test/build/js/thrift.js",
       },
       InstallThriftNodeJSDep: {
-        command: 'cd ../.. && npm install'
+        command: "cd ../.. && npm install",
       },
       InstallTestLibs: {
-        command: 'cd test && ant download_jslibs'
+        command: "cd test && ant download_jslibs",
       },
       ThriftGen: {
         command: [
@@ -55,34 +56,38 @@
           '"../../compiler/cpp/thrift" -gen js:node --out test/gen-nodejs ../../test/v0.16/ThriftTest.thrift',
           '"../../compiler/cpp/thrift" -gen js:es6 --out test/gen-js-es6 ../../test/v0.16/ThriftTest.thrift',
           '"../../compiler/cpp/thrift" -gen js:node,es6 --out ./test/gen-nodejs-es6 ../../test/v0.16/ThriftTest.thrift',
-        ].join(' && ')
+        ].join(" && "),
       },
       ThriftGenJQ: {
-        command: '../../compiler/cpp/thrift -gen js:jquery -gen js:node -o test ../../test/v0.16/ThriftTest.thrift'
+        command:
+          "../../compiler/cpp/thrift -gen js:jquery -gen js:node -o test ../../test/v0.16/ThriftTest.thrift",
       },
       ThriftGenDeepConstructor: {
-        command: '../../compiler/cpp/thrift -gen js -o test ../../test/JsDeepConstructorTest.thrift'
+        command:
+          "../../compiler/cpp/thrift -gen js -o test ../../test/JsDeepConstructorTest.thrift",
       },
       ThriftBrowserifyNodeInt64: {
         command: [
-          './node_modules/browserify/bin/cmd.js ./node_modules/node-int64/Int64.js -s Int64 -o test/build/js/lib/Int64.js',
-          './node_modules/browserify/bin/cmd.js ../nodejs/lib/thrift/int64_util.js -s Int64Util -o test/build/js/lib/Int64Util.js',
-          './node_modules/browserify/bin/cmd.js ./node_modules/json-int64/index.js -s JSONInt64 -o test/build/js/lib/JSONInt64.js'
-        ].join(' && ')
+          "./node_modules/browserify/bin/cmd.js ./node_modules/node-int64/Int64.js -s Int64 -o test/build/js/lib/Int64.js",
+          "./node_modules/browserify/bin/cmd.js ../nodejs/lib/thrift/int64_util.js -s Int64Util -o test/build/js/lib/Int64Util.js",
+          "./node_modules/browserify/bin/cmd.js ./node_modules/json-int64/index.js -s JSONInt64 -o test/build/js/lib/JSONInt64.js",
+        ].join(" && "),
       },
       ThriftGenInt64: {
-        command: '../../compiler/cpp/thrift -gen js -o test ../../test/Int64Test.thrift'
+        command:
+          "../../compiler/cpp/thrift -gen js -o test ../../test/Int64Test.thrift",
       },
       ThriftGenDoubleConstants: {
-        command: '../../compiler/cpp/thrift -gen js -o test ../../test/DoubleConstantsTest.thrift'
+        command:
+          "../../compiler/cpp/thrift -gen js -o test ../../test/DoubleConstantsTest.thrift",
       },
       ThriftTestServer: {
         options: {
           async: true,
           execOptions: {
             cwd: "./test",
-            env: {NODE_PATH: "../../nodejs/lib:../../../node_modules"}
-          }
+            env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" },
+          },
         },
         command: "node server_http.js",
       },
@@ -91,8 +96,8 @@
           async: true,
           execOptions: {
             cwd: "./test",
-            env: {NODE_PATH: "../../nodejs/lib:../../../node_modules"}
-          }
+            env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" },
+          },
         },
         command: "node server_http.js --es6",
       },
@@ -101,8 +106,8 @@
           async: true,
           execOptions: {
             cwd: "./test",
-            env: {NODE_PATH: "../../nodejs/lib:../../../node_modules"}
-          }
+            env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" },
+          },
         },
         command: "node server_https.js",
       },
@@ -111,8 +116,8 @@
           async: true,
           execOptions: {
             cwd: "./test",
-            env: {NODE_PATH: "../../nodejs/lib:../../../node_modules"}
-          }
+            env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" },
+          },
         },
         command: "node server_https.js --es6",
       },
@@ -120,213 +125,201 @@
     qunit: {
       ThriftJS: {
         options: {
-          urls: [
-            'http://localhost:8089/test-nojq.html'
-          ],
+          urls: ["http://localhost:8089/test-nojq.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
           },
-        }
+        },
       },
       ThriftJSJQ: {
         options: {
-          urls: [
-            'http://localhost:8089/test.html'
-          ],
+          urls: ["http://localhost:8089/test.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
           },
-        }
+        },
       },
       ThriftJS_DoubleRendering: {
         options: {
-          urls: [
-            'http://localhost:8089/test-double-rendering.html'
-          ],
+          urls: ["http://localhost:8089/test-double-rendering.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
             ignoreHTTPSErrors: true,
           },
-        }
+        },
       },
       ThriftJS_Int64: {
         options: {
-          urls: [
-            'http://localhost:8089/test-int64.html'
-          ],
+          urls: ["http://localhost:8089/test-int64.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
             ignoreHTTPSErrors: true,
           },
-        }
+        },
       },
       ThriftWS: {
         options: {
-          urls: [
-            'http://localhost:8089/testws.html'
-          ],
+          urls: ["http://localhost:8089/testws.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
           },
-        }
+        },
       },
       ThriftJS_TLS: {
         options: {
-          urls: [
-            'https://localhost:8091/test-nojq.html'
-          ],
+          urls: ["https://localhost:8091/test-nojq.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
             ignoreHTTPSErrors: true,
           },
-        }
+        },
       },
       ThriftJSJQ_TLS: {
         options: {
-          urls: [
-            'https://localhost:8091/test.html'
-          ],
+          urls: ["https://localhost:8091/test.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
             ignoreHTTPSErrors: true,
           },
-        }
+        },
       },
       ThriftWS_TLS: {
         options: {
-          urls: [
-            'https://localhost:8091/testws.html'
-          ],
+          urls: ["https://localhost:8091/testws.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
             ignoreHTTPSErrors: true,
           },
-        }
+        },
       },
       ThriftDeepConstructor: {
         options: {
-          urls: [
-            'http://localhost:8089/test-deep-constructor.html'
-          ],
+          urls: ["http://localhost:8089/test-deep-constructor.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
           },
-        }
+        },
       },
       ThriftWSES6: {
         options: {
-          urls: [
-            'http://localhost:8088/test-es6.html'
-          ],
+          urls: ["http://localhost:8088/test-es6.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
           },
-        }
-      }
+        },
+      },
     },
     jshint: {
       // The main Thrift library file. not es6 yet :(
       lib: {
-        src: ['src/**/*.js'],
+        src: ["src/**/*.js"],
       },
       // The test files use es6
       test: {
-        src: ['Gruntfile.js', 'test/*.js'],
+        src: ["Gruntfile.js", "test/*.js"],
         options: {
           esversion: 6,
-        }
+        },
       },
       gen_js_code: {
-        src: ['test/gen-js/*.js', 'test/gen-js-jquery/*.js'],
+        src: ["test/gen-js/*.js", "test/gen-js-jquery/*.js"],
       },
       gen_es6_code: {
-        src: ['test/gen-js-es6/*.js'],
+        src: ["test/gen-js-es6/*.js"],
         options: {
           esversion: 6,
-        }
+        },
       },
       gen_node_code: {
-        src: ['test/gen-nodejs/*.js'],
+        src: ["test/gen-nodejs/*.js"],
         options: {
           node: true,
-        }
+        },
       },
       gen_node_es6_code: {
-        src: ['test/gen-nodejs-es6/*.js'],
+        src: ["test/gen-nodejs-es6/*.js"],
         options: {
           node: true,
           esversion: 6,
-        }
-      }
+        },
+      },
     },
   });
 
-  grunt.loadNpmTasks('grunt-contrib-uglify');
-  grunt.loadNpmTasks('grunt-contrib-jshint');
-  grunt.loadNpmTasks('grunt-contrib-qunit');
-  grunt.loadNpmTasks('grunt-contrib-concat');
-  grunt.loadNpmTasks('grunt-jsdoc');
-  grunt.loadNpmTasks('grunt-shell-spawn');
+  grunt.loadNpmTasks("grunt-contrib-uglify");
+  grunt.loadNpmTasks("grunt-contrib-jshint");
+  grunt.loadNpmTasks("grunt-contrib-qunit");
+  grunt.loadNpmTasks("grunt-contrib-concat");
+  grunt.loadNpmTasks("grunt-jsdoc");
+  grunt.loadNpmTasks("grunt-shell-spawn");
 
-  grunt.registerTask('wait', 'Wait just one second for the server to start', function () {
-    var done = this.async();
-    setTimeout(function() {
-      done(true);
-    }, 1000);
-  });
+  grunt.registerTask(
+    "wait",
+    "Wait just one second for the server to start",
+    function () {
+      var done = this.async();
+      setTimeout(function () {
+        done(true);
+      }, 1000);
+    },
+  );
 
-  grunt.registerTask('CreateDirectories', 'Creating required local directories', function () {
-    grunt.file.mkdir('test/build/js/lib');
-    grunt.file.mkdir('test/gen-js');
-    grunt.file.mkdir('test/gen-js-jquery');
-    grunt.file.mkdir('test/gen-nodejs');
-    grunt.file.mkdir('test/gen-js-es6');
-    grunt.file.mkdir('test/gen-nodejs-es6');
-});
+  grunt.registerTask(
+    "CreateDirectories",
+    "Creating required local directories",
+    function () {
+      grunt.file.mkdir("test/build/js/lib");
+      grunt.file.mkdir("test/gen-js");
+      grunt.file.mkdir("test/gen-js-jquery");
+      grunt.file.mkdir("test/gen-nodejs");
+      grunt.file.mkdir("test/gen-js-es6");
+      grunt.file.mkdir("test/gen-nodejs-es6");
+    },
+  );
 
-  grunt.registerTask('installAndGenerate', [
-    'CreateDirectories',
-    'shell:InstallThriftJS',
-    'shell:InstallThriftNodeJSDep',
-    'shell:ThriftGen',
-    'shell:ThriftGenDeepConstructor',
-    'shell:ThriftGenDoubleConstants',
-    'shell:InstallTestLibs',
-    'shell:ThriftBrowserifyNodeInt64',
-    'shell:ThriftGenInt64'
+  grunt.registerTask("installAndGenerate", [
+    "CreateDirectories",
+    "shell:InstallThriftJS",
+    "shell:InstallThriftNodeJSDep",
+    "shell:ThriftGen",
+    "shell:ThriftGenDeepConstructor",
+    "shell:ThriftGenDoubleConstants",
+    "shell:InstallTestLibs",
+    "shell:ThriftBrowserifyNodeInt64",
+    "shell:ThriftGenInt64",
   ]);
 
-  grunt.registerTask('test', [
-    'installAndGenerate',
-    'jshint',
-    'shell:ThriftTestServer',
-    'shell:ThriftTestServer_TLS',
-    'shell:ThriftTestServerES6',
-    'shell:ThriftTestServerES6_TLS',
-    'wait',
-    'qunit:ThriftDeepConstructor',
-    'qunit:ThriftJS',
-    'qunit:ThriftJS_TLS',
-    'qunit:ThriftJS_DoubleRendering',
-    'qunit:ThriftWS',
-    'qunit:ThriftJSJQ',
-    'qunit:ThriftJSJQ_TLS',
-    'qunit:ThriftWSES6',
-    'qunit:ThriftJS_Int64',
-    'shell:ThriftTestServer:kill',
-    'shell:ThriftTestServer_TLS:kill',
-    'shell:ThriftTestServerES6:kill',
-    'shell:ThriftTestServerES6_TLS:kill',
+  grunt.registerTask("test", [
+    "installAndGenerate",
+    "jshint",
+    "shell:ThriftTestServer",
+    "shell:ThriftTestServer_TLS",
+    "shell:ThriftTestServerES6",
+    "shell:ThriftTestServerES6_TLS",
+    "wait",
+    "qunit:ThriftDeepConstructor",
+    "qunit:ThriftJS",
+    "qunit:ThriftJS_TLS",
+    "qunit:ThriftJS_DoubleRendering",
+    "qunit:ThriftWS",
+    "qunit:ThriftJSJQ",
+    "qunit:ThriftJSJQ_TLS",
+    "qunit:ThriftWSES6",
+    "qunit:ThriftJS_Int64",
+    "shell:ThriftTestServer:kill",
+    "shell:ThriftTestServer_TLS:kill",
+    "shell:ThriftTestServerES6:kill",
+    "shell:ThriftTestServerES6_TLS:kill",
   ]);
-  grunt.registerTask('default', ['test', 'concat', 'uglify', 'jsdoc']);
+  grunt.registerTask("default", ["test", "concat", "uglify", "jsdoc"]);
 };
diff --git a/lib/nodejs/examples/client.js b/lib/nodejs/examples/client.js
index c83b342..29dac26 100644
--- a/lib/nodejs/examples/client.js
+++ b/lib/nodejs/examples/client.js
@@ -16,28 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var thrift = require('thrift');
+var thrift = require("thrift");
 
-var UserStorage = require('./gen-nodejs/UserStorage.js'),
-    ttypes = require('./gen-nodejs/user_types');
+var UserStorage = require("./gen-nodejs/UserStorage.js"),
+  ttypes = require("./gen-nodejs/user_types");
 
-var connection = thrift.createConnection('localhost', 9090),
-    client = thrift.createClient(UserStorage, connection);
+var connection = thrift.createConnection("localhost", 9090),
+  client = thrift.createClient(UserStorage, connection);
 
-var user = new ttypes.UserProfile({uid: 1,
-                                   name: "Mark Slee",
-                                   blurb: "I'll find something to put here."});
+var user = new ttypes.UserProfile({
+  uid: 1,
+  name: "Mark Slee",
+  blurb: "I'll find something to put here.",
+});
 
-connection.on('error', function(err) {
+connection.on("error", function (err) {
   console.error(err);
 });
 
-client.store(user, function(err, response) {
+client.store(user, function (err, response) {
   if (err) {
     console.error(err);
   } else {
     console.log("client stored:", user.uid);
-    client.retrieve(user.uid, function(err, responseUser) {
+    client.retrieve(user.uid, function (err, responseUser) {
       if (err) {
         console.error(err);
       } else {
diff --git a/lib/nodejs/examples/client_multitransport.js b/lib/nodejs/examples/client_multitransport.js
index 1e37de3..05e5c31 100644
--- a/lib/nodejs/examples/client_multitransport.js
+++ b/lib/nodejs/examples/client_multitransport.js
@@ -16,43 +16,61 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var thrift = require('thrift'),
-    ttransport = require('thrift/transport');
+var thrift = require("thrift"),
+  ttransport = require("thrift/transport");
 
-var UserStorage = require('./gen-nodejs/UserStorage'),
-    ttypes = require('./gen-nodejs/user_types');
+var UserStorage = require("./gen-nodejs/UserStorage"),
+  ttypes = require("./gen-nodejs/user_types");
 
-var f_conn = thrift.createConnection('localhost', 9090), // default: framed
-    f_client = thrift.createClient(UserStorage, f_conn);
-var b_conn = thrift.createConnection('localhost', 9091, {transport: ttransport.TBufferedTransport}),
-    b_client = thrift.createClient(UserStorage, b_conn);
-var user1 = new ttypes.UserProfile({uid: 1,
-                                    name: "Mark Slee",
-                                    blurb: "I'll find something to put here."});
-var user2 = new ttypes.UserProfile({uid: 2,
-                                    name: "Satoshi Tagomori",
-                                    blurb: "ok, let's test with buffered transport."});
+var f_conn = thrift.createConnection("localhost", 9090), // default: framed
+  f_client = thrift.createClient(UserStorage, f_conn);
+var b_conn = thrift.createConnection("localhost", 9091, {
+    transport: ttransport.TBufferedTransport,
+  }),
+  b_client = thrift.createClient(UserStorage, b_conn);
+var user1 = new ttypes.UserProfile({
+  uid: 1,
+  name: "Mark Slee",
+  blurb: "I'll find something to put here.",
+});
+var user2 = new ttypes.UserProfile({
+  uid: 2,
+  name: "Satoshi Tagomori",
+  blurb: "ok, let's test with buffered transport.",
+});
 
-f_conn.on('error', function(err) {
+f_conn.on("error", function (err) {
   console.error("framed:", err);
 });
 
-f_client.store(user1, function(err, response) {
-  if (err) { console.error(err); return; }
+f_client.store(user1, function (err, response) {
+  if (err) {
+    console.error(err);
+    return;
+  }
 
   console.log("stored:", user1.uid, " as ", user1.name);
-  b_client.retrieve(user1.uid, function(err, responseUser) {
-    if (err) { console.error(err); return; }
+  b_client.retrieve(user1.uid, function (err, responseUser) {
+    if (err) {
+      console.error(err);
+      return;
+    }
     console.log("retrieved:", responseUser.uid, " as ", responseUser.name);
   });
 });
 
-b_client.store(user2, function(err, response) {
-  if (err) { console.error(err); return; }
+b_client.store(user2, function (err, response) {
+  if (err) {
+    console.error(err);
+    return;
+  }
 
   console.log("stored:", user2.uid, " as ", user2.name);
-  f_client.retrieve(user2.uid, function(err, responseUser) {
-    if (err) { console.error(err); return; }
+  f_client.retrieve(user2.uid, function (err, responseUser) {
+    if (err) {
+      console.error(err);
+      return;
+    }
     console.log("retrieved:", responseUser.uid, " as ", responseUser.name);
   });
 });
diff --git a/lib/nodejs/examples/hello.js b/lib/nodejs/examples/hello.js
index 8b7c4e4..5f1b682 100644
--- a/lib/nodejs/examples/hello.js
+++ b/lib/nodejs/examples/hello.js
@@ -16,46 +16,46 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var thrift = require('thrift');
-var HelloSvc = require('./gen-nodejs/HelloSvc.js');
-var TimesTwoSvc = require('./gen-nodejs/TimesTwo.js');
+var thrift = require("thrift");
+var HelloSvc = require("./gen-nodejs/HelloSvc.js");
+var TimesTwoSvc = require("./gen-nodejs/TimesTwo.js");
 
 var helloHandler = {
-	hello_func: function(result) {
-		this.call_counter = this.call_counter || 0;
-		console.log("Client call: " + (++this.call_counter));
-		result(null, "Hello Apache Thrift for JavaScript " + this.call_counter);
-	}
-}
+  hello_func: function (result) {
+    this.call_counter = this.call_counter || 0;
+    console.log("Client call: " + ++this.call_counter);
+    result(null, "Hello Apache Thrift for JavaScript " + this.call_counter);
+  },
+};
 
 var timesTwoHandler = {
-	dbl: function(val, result) {
-		console.log("Client call: " + val);
-		result(null, val * 2);
-	}
-}
+  dbl: function (val, result) {
+    console.log("Client call: " + val);
+    result(null, val * 2);
+  },
+};
 
 var helloService = {
-	transport: thrift.TBufferedTransport,
-	protocol: thrift.TJSONProtocol,
-	processor: HelloSvc,
-	handler: helloHandler
+  transport: thrift.TBufferedTransport,
+  protocol: thrift.TJSONProtocol,
+  processor: HelloSvc,
+  handler: helloHandler,
 };
 
 var dblService = {
-	transport: thrift.TBufferedTransport,
-	protocol: thrift.TJSONProtocol,
-	processor: TimesTwoSvc,
-	handler: timesTwoHandler
+  transport: thrift.TBufferedTransport,
+  protocol: thrift.TJSONProtocol,
+  processor: TimesTwoSvc,
+  handler: timesTwoHandler,
 };
 
 var ServerOptions = {
-	files: ".",
-	services: {
-		"/hello": helloService,
-		"/dbl": dblService,
-	}
-}
+  files: ".",
+  services: {
+    "/hello": helloService,
+    "/dbl": dblService,
+  },
+};
 
 var server = thrift.createWebServer(ServerOptions);
 var port = 8585;
diff --git a/lib/nodejs/examples/httpClient.js b/lib/nodejs/examples/httpClient.js
index 19cc0c3..155b5f4 100644
--- a/lib/nodejs/examples/httpClient.js
+++ b/lib/nodejs/examples/httpClient.js
@@ -1,23 +1,21 @@
-var thrift = require('thrift');
-var helloSvc = require('./gen-nodejs/HelloSvc.js');
+var thrift = require("thrift");
+var helloSvc = require("./gen-nodejs/HelloSvc.js");
 
 var options = {
-   transport: thrift.TBufferedTransport,
-   protocol: thrift.TJSONProtocol,
-   path: "/hello",
-   headers: {"Connection": "close"},
-   https: false
+  transport: thrift.TBufferedTransport,
+  protocol: thrift.TJSONProtocol,
+  path: "/hello",
+  headers: { Connection: "close" },
+  https: false,
 };
 
 var connection = thrift.createHttpConnection("localhost", 9090, options);
 var client = thrift.createHttpClient(helloSvc, connection);
 
-connection.on("error", function(err) {
-   console.log("Error: " + err);
+connection.on("error", function (err) {
+  console.log("Error: " + err);
 });
 
-client.hello_func(function(error, result) {
-   console.log("Msg from server: " + result);
+client.hello_func(function (error, result) {
+  console.log("Msg from server: " + result);
 });
-
-
diff --git a/lib/nodejs/examples/httpServer.js b/lib/nodejs/examples/httpServer.js
index acae136..c4cbc9f 100644
--- a/lib/nodejs/examples/httpServer.js
+++ b/lib/nodejs/examples/httpServer.js
@@ -1,31 +1,30 @@
-var thrift = require('thrift');                 	
-var helloSvc = require('./gen-nodejs/HelloSvc');
+var thrift = require("thrift");
+var helloSvc = require("./gen-nodejs/HelloSvc");
 
-//ServiceHandler: Implement the hello service 
+//ServiceHandler: Implement the hello service
 var helloHandler = {
   hello_func: function (result) {
     console.log("Received Hello call");
     result(null, "Hello from Node.js");
-  }
+  },
 };
 
 //ServiceOptions: The I/O stack for the service
-var helloSvcOpt = {                       		
-    handler: helloHandler,                      	
-    processor: helloSvc,                         	
-    protocol: thrift.TJSONProtocol,                 
-    transport: thrift.TBufferedTransport 		
-};                                  
+var helloSvcOpt = {
+  handler: helloHandler,
+  processor: helloSvc,
+  protocol: thrift.TJSONProtocol,
+  transport: thrift.TBufferedTransport,
+};
 
 //ServerOptions: Define server features
-var serverOpt = {                          	
-   services: {                         
-      "/hello": helloSvcOpt                 
-   }                               
-}                                   
+var serverOpt = {
+  services: {
+    "/hello": helloSvcOpt,
+  },
+};
 
-//Create and start the web server 
-var port = 9090;                            		
-thrift.createWebServer(serverOpt).listen(port);                        		
+//Create and start the web server
+var port = 9090;
+thrift.createWebServer(serverOpt).listen(port);
 console.log("Http/Thrift Server running on port: " + port);
-
diff --git a/lib/nodejs/examples/parse.js b/lib/nodejs/examples/parse.js
index 168a1ae..8513e4c 100644
--- a/lib/nodejs/examples/parse.js
+++ b/lib/nodejs/examples/parse.js
@@ -35,11 +35,11 @@
  */
 
 function parseThrift(thriftEncodedData, callback) {
-  var thrift = require('thrift');
+  var thrift = require("thrift");
   var transport = new thrift.TFramedTransport(thriftEncodedData);
-  var protocol  = new thrift.TBinaryProtocol(transport);
+  var protocol = new thrift.TBinaryProtocol(transport);
 
-  var clientClass = require('../gen-nodejs/GENERATED').YOUR_CLASS_NAME;
+  var clientClass = require("../gen-nodejs/GENERATED").YOUR_CLASS_NAME;
   var client = new clientClass();
   client.read(protocol);
   callback(null, client);
diff --git a/lib/nodejs/examples/server.js b/lib/nodejs/examples/server.js
index 1c482fe..41492cb 100644
--- a/lib/nodejs/examples/server.js
+++ b/lib/nodejs/examples/server.js
@@ -16,21 +16,21 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var thrift = require('thrift');
+var thrift = require("thrift");
 
-var UserStorage = require('./gen-nodejs/UserStorage.js'),
-    ttypes = require('./gen-nodejs/user_types');
+var UserStorage = require("./gen-nodejs/UserStorage.js"),
+  ttypes = require("./gen-nodejs/user_types");
 
 var users = {};
 
 var server = thrift.createServer(UserStorage, {
-  store: function(user, result) {
+  store: function (user, result) {
     console.log("server stored:", user.uid);
     users[user.uid] = user;
     result(null);
   },
 
-  retrieve: function(uid, result) {
+  retrieve: function (uid, result) {
     console.log("server retrieved:", uid);
     result(null, users[uid]);
   },
diff --git a/lib/nodejs/examples/server_http.js b/lib/nodejs/examples/server_http.js
index ef2dc83..235f675 100644
--- a/lib/nodejs/examples/server_http.js
+++ b/lib/nodejs/examples/server_http.js
@@ -16,38 +16,46 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var connect = require('connect');
-var thrift = require('thrift');
+var connect = require("connect");
+var thrift = require("thrift");
 
-var UserStorage = require('./gen-nodejs/UserStorage'),
-    ttypes = require('./gen-nodejs/user_types');
+var UserStorage = require("./gen-nodejs/UserStorage"),
+  ttypes = require("./gen-nodejs/user_types");
 
 var users = {};
 
-var store = function(user, result) {
+var store = function (user, result) {
   console.log("stored:", user.uid);
   users[user.uid] = user;
   result(null);
 };
-var retrieve = function(uid, result) {
+var retrieve = function (uid, result) {
   console.log("retrieved:", uid);
   result(null, users[uid]);
 };
 
 var server_http = thrift.createHttpServer(UserStorage, {
   store: store,
-  retrieve: retrieve
+  retrieve: retrieve,
 });
 server_http.listen(9090);
 
-var server_connect = connect(thrift.httpMiddleware(UserStorage, {
- store: store,
- retrieve: retrieve
-}));
+var server_connect = connect(
+  thrift.httpMiddleware(UserStorage, {
+    store: store,
+    retrieve: retrieve,
+  }),
+);
 server_http.listen(9091);
 
-var server_connect_json = connect(thrift.httpMiddleware(UserStorage, {
- store: store,
- retrieve: retrieve
-}, {protocol: thrift.TJSONProtocol}));
+var server_connect_json = connect(
+  thrift.httpMiddleware(
+    UserStorage,
+    {
+      store: store,
+      retrieve: retrieve,
+    },
+    { protocol: thrift.TJSONProtocol },
+  ),
+);
 server_connect_json.listen(9092);
diff --git a/lib/nodejs/examples/server_multitransport.js b/lib/nodejs/examples/server_multitransport.js
index a348e68..3dc0b17 100644
--- a/lib/nodejs/examples/server_multitransport.js
+++ b/lib/nodejs/examples/server_multitransport.js
@@ -16,31 +16,35 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var thrift = require('thrift'),
-    ttransport = require('thrift/transport');
+var thrift = require("thrift"),
+  ttransport = require("thrift/transport");
 
-var UserStorage = require('./gen-nodejs/UserStorage'),
-    ttypes = require('./gen-nodejs/user_types');
+var UserStorage = require("./gen-nodejs/UserStorage"),
+  ttypes = require("./gen-nodejs/user_types");
 
 var users = {};
 
-var store = function(user, result) {
+var store = function (user, result) {
   console.log("stored:", user.uid);
   users[user.uid] = user;
   result(null);
 };
-var retrieve = function(uid, result) {
+var retrieve = function (uid, result) {
   console.log("retrieved:", uid);
   result(null, users[uid]);
 };
 
 var server_framed = thrift.createServer(UserStorage, {
   store: store,
-  retrieve: retrieve
+  retrieve: retrieve,
 });
 server_framed.listen(9090);
-var server_buffered = thrift.createServer(UserStorage, {
- store: store,
- retrieve: retrieve
-}, {transport: ttransport.TBufferedTransport});
+var server_buffered = thrift.createServer(
+  UserStorage,
+  {
+    store: store,
+    retrieve: retrieve,
+  },
+  { transport: ttransport.TBufferedTransport },
+);
 server_buffered.listen(9091);
diff --git a/lib/nodejs/lib/thrift/binary.js b/lib/nodejs/lib/thrift/binary.js
index 9813ffd..e8bbee7 100644
--- a/lib/nodejs/lib/thrift/binary.js
+++ b/lib/nodejs/lib/thrift/binary.js
@@ -26,11 +26,11 @@
 var POW_52 = Math.pow(2, 52);
 var POW_1022 = Math.pow(2, 1022);
 
-exports.readByte = function(b){
-	return b > 127 ? b-256 : b;
+exports.readByte = function (b) {
+  return b > 127 ? b - 256 : b;
 };
 
-exports.readI16 = function(buff, off) {
+exports.readI16 = function (buff, off) {
   off = off || 0;
   var v = buff[off + 1];
   v += buff[off] << 8;
@@ -40,7 +40,7 @@
   return v;
 };
 
-exports.readI32 = function(buff, off) {
+exports.readI32 = function (buff, off) {
   off = off || 0;
   var v = buff[off + 3];
   v += buff[off + 2] << 8;
@@ -52,14 +52,14 @@
   return v;
 };
 
-exports.writeI16 = function(buff, v) {
+exports.writeI16 = function (buff, v) {
   buff[1] = v & 0xff;
   v >>= 8;
   buff[0] = v & 0xff;
   return buff;
 };
 
-exports.writeI32 = function(buff, v) {
+exports.writeI32 = function (buff, v) {
   buff[3] = v & 0xff;
   v >>= 8;
   buff[2] = v & 0xff;
@@ -70,26 +70,26 @@
   return buff;
 };
 
-exports.readDouble = function(buff, off) {
+exports.readDouble = function (buff, off) {
   off = off || 0;
   var signed = buff[off] & 0x80;
-  var e = (buff[off+1] & 0xF0) >> 4;
-  e += (buff[off] & 0x7F) << 4;
+  var e = (buff[off + 1] & 0xf0) >> 4;
+  e += (buff[off] & 0x7f) << 4;
 
-  var m = buff[off+7];
-  m += buff[off+6] << 8;
-  m += buff[off+5] << 16;
-  m += buff[off+4] * POW_24;
-  m += buff[off+3] * POW_32;
-  m += buff[off+2] * POW_40;
-  m += (buff[off+1] & 0x0F) * POW_48;
+  var m = buff[off + 7];
+  m += buff[off + 6] << 8;
+  m += buff[off + 5] << 16;
+  m += buff[off + 4] * POW_24;
+  m += buff[off + 3] * POW_32;
+  m += buff[off + 2] * POW_40;
+  m += (buff[off + 1] & 0x0f) * POW_48;
 
   switch (e) {
     case 0:
       e = -1022;
       break;
     case 2047:
-      return m ? NaN : (signed ? -Infinity : Infinity);
+      return m ? NaN : signed ? -Infinity : Infinity;
     default:
       m += POW_52;
       e -= 1023;
@@ -106,10 +106,10 @@
  * Based on code from the jspack module:
  * http://code.google.com/p/jspack/
  */
-exports.writeDouble = function(buff, v) {
+exports.writeDouble = function (buff, v) {
   var m, e, c;
 
-  buff[0] = (v < 0 ? 0x80 : 0x00);
+  buff[0] = v < 0 ? 0x80 : 0x00;
 
   v = Math.abs(v);
   if (v !== v) {
@@ -127,22 +127,17 @@
       c *= 2;
     }
 
-    if (e + 1023 >= 2047)
-    {
+    if (e + 1023 >= 2047) {
       // Overflow
       m = 0;
       e = 2047;
-    }
-    else if (e + 1023 >= 1)
-    {
+    } else if (e + 1023 >= 1) {
       // Normalized - term order matters, as Math.pow(2, 52-e) and v*Math.pow(2, 52) can overflow
-      m = (v*c-1) * POW_52;
+      m = (v * c - 1) * POW_52;
       e += 1023;
-    }
-    else
-    {
+    } else {
       // Denormalized - also catches the '0' case, somewhat by chance
-      m = (v * POW_1022) * POW_52;
+      m = v * POW_1022 * POW_52;
       e = 0;
     }
   }
diff --git a/lib/nodejs/lib/thrift/binary_protocol.js b/lib/nodejs/lib/thrift/binary_protocol.js
index af8836c..fc4df4a 100644
--- a/lib/nodejs/lib/thrift/binary_protocol.js
+++ b/lib/nodejs/lib/thrift/binary_protocol.js
@@ -17,10 +17,10 @@
  * under the License.
  */
 
-var log = require('./log');
-var binary = require('./binary');
-var Int64 = require('node-int64');
-var Thrift = require('./thrift');
+var log = require("./log");
+var binary = require("./binary");
+var Int64 = require("node-int64");
+var Thrift = require("./thrift");
 var Type = Thrift.Type;
 
 module.exports = TBinaryProtocol;
@@ -29,96 +29,90 @@
 // The largest integer value which can be represented in JavaScript is +/-2^53.
 // Bitwise operations convert numbers to 32 bit integers but perform sign extension
 // upon assigning values back to variables.
-var VERSION_MASK = -65536,   // 0xffff0000
-    VERSION_1 = -2147418112, // 0x80010000
-    TYPE_MASK = 0x000000ff;
+var VERSION_MASK = -65536, // 0xffff0000
+  VERSION_1 = -2147418112, // 0x80010000
+  TYPE_MASK = 0x000000ff;
 
 TBinaryProtocol.VERSION_MASK = VERSION_MASK;
 TBinaryProtocol.VERSION_1 = VERSION_1;
-TBinaryProtocol.TYPE_MASK = TYPE_MASK
+TBinaryProtocol.TYPE_MASK = TYPE_MASK;
 
 function TBinaryProtocol(trans, strictRead, strictWrite) {
   this.trans = trans;
-  this.strictRead = (strictRead !== undefined ? strictRead : false);
-  this.strictWrite = (strictWrite !== undefined ? strictWrite : true);
+  this.strictRead = strictRead !== undefined ? strictRead : false;
+  this.strictWrite = strictWrite !== undefined ? strictWrite : true;
   this._seqid = null;
-};
+}
 
-TBinaryProtocol.prototype.flush = function() {
+TBinaryProtocol.prototype.flush = function () {
   return this.trans.flush();
 };
 
-TBinaryProtocol.prototype.writeMessageBegin = function(name, type, seqid) {
-    if (this.strictWrite) {
-      this.writeI32(VERSION_1 | type);
-      this.writeString(name);
-      this.writeI32(seqid);
-    } else {
-      this.writeString(name);
-      this.writeByte(type);
-      this.writeI32(seqid);
-    }
-    // Record client seqid to find callback again
-    if (this._seqid !== null) {
-      log.warning('SeqId already set', { 'name': name });
-    } else {
-      this._seqid = seqid;
-      this.trans.setCurrSeqId(seqid);
-    }
+TBinaryProtocol.prototype.writeMessageBegin = function (name, type, seqid) {
+  if (this.strictWrite) {
+    this.writeI32(VERSION_1 | type);
+    this.writeString(name);
+    this.writeI32(seqid);
+  } else {
+    this.writeString(name);
+    this.writeByte(type);
+    this.writeI32(seqid);
+  }
+  // Record client seqid to find callback again
+  if (this._seqid !== null) {
+    log.warning("SeqId already set", { name: name });
+  } else {
+    this._seqid = seqid;
+    this.trans.setCurrSeqId(seqid);
+  }
 };
 
-TBinaryProtocol.prototype.writeMessageEnd = function() {
-    if (this._seqid !== null) {
-        this._seqid = null;
-    } else {
-        log.warning('No seqid to unset');
-    }
+TBinaryProtocol.prototype.writeMessageEnd = function () {
+  if (this._seqid !== null) {
+    this._seqid = null;
+  } else {
+    log.warning("No seqid to unset");
+  }
 };
 
-TBinaryProtocol.prototype.writeStructBegin = function(name) {
-};
+TBinaryProtocol.prototype.writeStructBegin = function (name) {};
 
-TBinaryProtocol.prototype.writeStructEnd = function() {
-};
+TBinaryProtocol.prototype.writeStructEnd = function () {};
 
-TBinaryProtocol.prototype.writeFieldBegin = function(name, type, id) {
+TBinaryProtocol.prototype.writeFieldBegin = function (name, type, id) {
   this.writeByte(type);
   this.writeI16(id);
 };
 
-TBinaryProtocol.prototype.writeFieldEnd = function() {
-};
+TBinaryProtocol.prototype.writeFieldEnd = function () {};
 
-TBinaryProtocol.prototype.writeFieldStop = function() {
+TBinaryProtocol.prototype.writeFieldStop = function () {
   this.writeByte(Type.STOP);
 };
 
-TBinaryProtocol.prototype.writeMapBegin = function(ktype, vtype, size) {
+TBinaryProtocol.prototype.writeMapBegin = function (ktype, vtype, size) {
   this.writeByte(ktype);
   this.writeByte(vtype);
   this.writeI32(size);
 };
 
-TBinaryProtocol.prototype.writeMapEnd = function() {
-};
+TBinaryProtocol.prototype.writeMapEnd = function () {};
 
-TBinaryProtocol.prototype.writeListBegin = function(etype, size) {
+TBinaryProtocol.prototype.writeListBegin = function (etype, size) {
   this.writeByte(etype);
   this.writeI32(size);
 };
 
-TBinaryProtocol.prototype.writeListEnd = function() {
-};
+TBinaryProtocol.prototype.writeListEnd = function () {};
 
-TBinaryProtocol.prototype.writeSetBegin = function(etype, size) {
+TBinaryProtocol.prototype.writeSetBegin = function (etype, size) {
   this.writeByte(etype);
   this.writeI32(size);
 };
 
-TBinaryProtocol.prototype.writeSetEnd = function() {
-};
+TBinaryProtocol.prototype.writeSetEnd = function () {};
 
-TBinaryProtocol.prototype.writeBool = function(bool) {
+TBinaryProtocol.prototype.writeBool = function (bool) {
   if (bool) {
     this.writeByte(1);
   } else {
@@ -126,19 +120,19 @@
   }
 };
 
-TBinaryProtocol.prototype.writeByte = function(b) {
+TBinaryProtocol.prototype.writeByte = function (b) {
   this.trans.write(new Buffer([b]));
 };
 
-TBinaryProtocol.prototype.writeI16 = function(i16) {
+TBinaryProtocol.prototype.writeI16 = function (i16) {
   this.trans.write(binary.writeI16(new Buffer(2), i16));
 };
 
-TBinaryProtocol.prototype.writeI32 = function(i32) {
+TBinaryProtocol.prototype.writeI32 = function (i32) {
   this.trans.write(binary.writeI32(new Buffer(4), i32));
 };
 
-TBinaryProtocol.prototype.writeI64 = function(i64) {
+TBinaryProtocol.prototype.writeI64 = function (i64) {
   if (i64.buffer) {
     this.trans.write(i64.buffer);
   } else {
@@ -146,108 +140,110 @@
   }
 };
 
-TBinaryProtocol.prototype.writeDouble = function(dub) {
+TBinaryProtocol.prototype.writeDouble = function (dub) {
   this.trans.write(binary.writeDouble(new Buffer(8), dub));
 };
 
-TBinaryProtocol.prototype.writeStringOrBinary = function(name, encoding, arg) {
-  if (typeof(arg) === 'string') {
+TBinaryProtocol.prototype.writeStringOrBinary = function (name, encoding, arg) {
+  if (typeof arg === "string") {
     this.writeI32(Buffer.byteLength(arg, encoding));
     this.trans.write(new Buffer(arg, encoding));
-  } else if ((arg instanceof Buffer) ||
-             (Object.prototype.toString.call(arg) == '[object Uint8Array]')) {
+  } else if (
+    arg instanceof Buffer ||
+    Object.prototype.toString.call(arg) == "[object Uint8Array]"
+  ) {
     // Buffers in Node.js under Browserify may extend UInt8Array instead of
     // defining a new object. We detect them here so we can write them
     // correctly
     this.writeI32(arg.length);
     this.trans.write(arg);
   } else {
-    throw new Error(name + ' called without a string/Buffer argument: ' + arg);
+    throw new Error(name + " called without a string/Buffer argument: " + arg);
   }
 };
 
-TBinaryProtocol.prototype.writeString = function(arg) {
-  this.writeStringOrBinary('writeString', 'utf8', arg);
+TBinaryProtocol.prototype.writeString = function (arg) {
+  this.writeStringOrBinary("writeString", "utf8", arg);
 };
 
-TBinaryProtocol.prototype.writeBinary = function(arg) {
-  this.writeStringOrBinary('writeBinary', 'binary', arg);
+TBinaryProtocol.prototype.writeBinary = function (arg) {
+  this.writeStringOrBinary("writeBinary", "binary", arg);
 };
 
-TBinaryProtocol.prototype.readMessageBegin = function() {
+TBinaryProtocol.prototype.readMessageBegin = function () {
   var sz = this.readI32();
   var type, name, seqid;
 
   if (sz < 0) {
     var version = sz & VERSION_MASK;
     if (version != VERSION_1) {
-      throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "Bad version in readMessageBegin: " + sz);
+      throw new Thrift.TProtocolException(
+        Thrift.TProtocolExceptionType.BAD_VERSION,
+        "Bad version in readMessageBegin: " + sz,
+      );
     }
     type = sz & TYPE_MASK;
     name = this.readString();
     seqid = this.readI32();
   } else {
     if (this.strictRead) {
-      throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "No protocol version header");
+      throw new Thrift.TProtocolException(
+        Thrift.TProtocolExceptionType.BAD_VERSION,
+        "No protocol version header",
+      );
     }
     name = this.trans.read(sz);
     type = this.readByte();
     seqid = this.readI32();
   }
-  return {fname: name, mtype: type, rseqid: seqid};
+  return { fname: name, mtype: type, rseqid: seqid };
 };
 
-TBinaryProtocol.prototype.readMessageEnd = function() {
+TBinaryProtocol.prototype.readMessageEnd = function () {};
+
+TBinaryProtocol.prototype.readStructBegin = function () {
+  return { fname: "" };
 };
 
-TBinaryProtocol.prototype.readStructBegin = function() {
-  return {fname: ''};
-};
+TBinaryProtocol.prototype.readStructEnd = function () {};
 
-TBinaryProtocol.prototype.readStructEnd = function() {
-};
-
-TBinaryProtocol.prototype.readFieldBegin = function() {
+TBinaryProtocol.prototype.readFieldBegin = function () {
   var type = this.readByte();
   if (type == Type.STOP) {
-    return {fname: null, ftype: type, fid: 0};
+    return { fname: null, ftype: type, fid: 0 };
   }
   var id = this.readI16();
-  return {fname: null, ftype: type, fid: id};
+  return { fname: null, ftype: type, fid: id };
 };
 
-TBinaryProtocol.prototype.readFieldEnd = function() {
-};
+TBinaryProtocol.prototype.readFieldEnd = function () {};
 
-TBinaryProtocol.prototype.readMapBegin = function() {
+TBinaryProtocol.prototype.readMapBegin = function () {
   var ktype = this.readByte();
   var vtype = this.readByte();
   var size = this.readI32();
-  return {ktype: ktype, vtype: vtype, size: size};
+  return { ktype: ktype, vtype: vtype, size: size };
 };
 
-TBinaryProtocol.prototype.readMapEnd = function() {
-};
+TBinaryProtocol.prototype.readMapEnd = function () {};
 
-TBinaryProtocol.prototype.readListBegin = function() {
+TBinaryProtocol.prototype.readListBegin = function () {
   var etype = this.readByte();
   var size = this.readI32();
-  return {etype: etype, size: size};
+  return { etype: etype, size: size };
 };
 
-TBinaryProtocol.prototype.readListEnd = function() {
-};
+TBinaryProtocol.prototype.readListEnd = function () {};
 
-TBinaryProtocol.prototype.readSetBegin = function() {
+TBinaryProtocol.prototype.readSetBegin = function () {
   var etype = this.readByte();
   var size = this.readI32();
-  return {etype: etype, size: size};
+  return { etype: etype, size: size };
 };
 
-TBinaryProtocol.prototype.readSetEnd = function() {
-};
+TBinaryProtocol.prototype.readSetEnd = function () {};
 
-TBinaryProtocol.prototype.readBool = function() {
+TBinaryProtocol.prototype.readBool = function () {
   var b = this.readByte();
   if (b === 0) {
     return false;
@@ -255,56 +251,62 @@
   return true;
 };
 
-TBinaryProtocol.prototype.readByte = function() {
+TBinaryProtocol.prototype.readByte = function () {
   return this.trans.readByte();
 };
 
-TBinaryProtocol.prototype.readI16 = function() {
+TBinaryProtocol.prototype.readI16 = function () {
   return this.trans.readI16();
 };
 
-TBinaryProtocol.prototype.readI32 = function() {
+TBinaryProtocol.prototype.readI32 = function () {
   return this.trans.readI32();
 };
 
-TBinaryProtocol.prototype.readI64 = function() {
+TBinaryProtocol.prototype.readI64 = function () {
   var buff = this.trans.read(8);
   return new Int64(buff);
 };
 
-TBinaryProtocol.prototype.readDouble = function() {
+TBinaryProtocol.prototype.readDouble = function () {
   return this.trans.readDouble();
 };
 
-TBinaryProtocol.prototype.readBinary = function() {
+TBinaryProtocol.prototype.readBinary = function () {
   var len = this.readI32();
   if (len === 0) {
     return new Buffer(0);
   }
 
   if (len < 0) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative binary size");
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.NEGATIVE_SIZE,
+      "Negative binary size",
+    );
   }
   return this.trans.read(len);
 };
 
-TBinaryProtocol.prototype.readString = function() {
+TBinaryProtocol.prototype.readString = function () {
   var len = this.readI32();
   if (len === 0) {
     return "";
   }
 
   if (len < 0) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative string size");
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.NEGATIVE_SIZE,
+      "Negative string size",
+    );
   }
   return this.trans.readString(len);
 };
 
-TBinaryProtocol.prototype.getTransport = function() {
+TBinaryProtocol.prototype.getTransport = function () {
   return this.trans;
 };
 
-TBinaryProtocol.prototype.skip = function(type) {
+TBinaryProtocol.prototype.skip = function (type) {
   switch (type) {
     case Type.BOOL:
       this.readBool();
@@ -362,6 +364,6 @@
       this.readListEnd();
       break;
     default:
-      throw new  Error("Invalid type: " + type);
+      throw new Error("Invalid type: " + type);
   }
 };
diff --git a/lib/nodejs/lib/thrift/browser.js b/lib/nodejs/lib/thrift/browser.js
index 5915cf6..5c843d0 100644
--- a/lib/nodejs/lib/thrift/browser.js
+++ b/lib/nodejs/lib/thrift/browser.js
@@ -16,42 +16,42 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-exports.Thrift = require('./thrift');
+exports.Thrift = require("./thrift");
 
-var wsConnection = require('./ws_connection');
+var wsConnection = require("./ws_connection");
 exports.WSConnection = wsConnection.WSConnection;
 exports.createWSConnection = wsConnection.createWSConnection;
 exports.createWSClient = wsConnection.createWSClient;
 
-var xhrConnection = require('./xhr_connection');
+var xhrConnection = require("./xhr_connection");
 exports.XHRConnection = xhrConnection.XHRConnection;
 exports.createXHRConnection = xhrConnection.createXHRConnection;
 exports.createXHRClient = xhrConnection.createXHRClient;
 
-var ohosConnection = require('./ohos_connection');
+var ohosConnection = require("./ohos_connection");
 exports.OhosConnection = ohosConnection.OhosConnection;
 exports.createOhosConnection = ohosConnection.createOhosConnection;
 exports.createOhosClient = ohosConnection.createOhosClient;
 
-exports.createClient = require('./create_client');
+exports.createClient = require("./create_client");
 
-exports.Int64 = require('node-int64');
-exports.Q = require('q');
+exports.Int64 = require("node-int64");
+exports.Q = require("q");
 
-var mpxProtocol = require('./multiplexed_protocol');
+var mpxProtocol = require("./multiplexed_protocol");
 exports.Multiplexer = mpxProtocol.Multiplexer;
 
 /*
  * Export transport and protocol so they can be used outside of a
  * cassandra/server context
  */
-exports.TBufferedTransport = require('./buffered_transport');
-exports.TFramedTransport = require('./framed_transport');
-exports.TWebSocketTransport = require('./ws_transport');
+exports.TBufferedTransport = require("./buffered_transport");
+exports.TFramedTransport = require("./framed_transport");
+exports.TWebSocketTransport = require("./ws_transport");
 
-exports.Protocol = require('./json_protocol');
-exports.TJSONProtocol = require('./json_protocol');
-exports.TBinaryProtocol = require('./binary_protocol');
-exports.TCompactProtocol = require('./compact_protocol');
+exports.Protocol = require("./json_protocol");
+exports.TJSONProtocol = require("./json_protocol");
+exports.TBinaryProtocol = require("./binary_protocol");
+exports.TCompactProtocol = require("./compact_protocol");
 
-exports.InputBufferUnderrunError = require('./input_buffer_underrun_error');
+exports.InputBufferUnderrunError = require("./input_buffer_underrun_error");
diff --git a/lib/nodejs/lib/thrift/buffered_transport.js b/lib/nodejs/lib/thrift/buffered_transport.js
index f0d5d4a..27d682d 100644
--- a/lib/nodejs/lib/thrift/buffered_transport.js
+++ b/lib/nodejs/lib/thrift/buffered_transport.js
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-var binary = require('./binary');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
-var THeaderTransport = require('./header_transport');
+var binary = require("./binary");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
+var THeaderTransport = require("./header_transport");
 
 module.exports = TBufferedTransport;
 
@@ -33,22 +33,22 @@
   this.outBuffers = [];
   this.outCount = 0;
   this.onFlush = callback;
-};
+}
 
 Object.setPrototypeOf(TBufferedTransport.prototype, THeaderTransport.prototype);
 
-TBufferedTransport.prototype.reset = function() {
+TBufferedTransport.prototype.reset = function () {
   this.inBuf = new Buffer(this.defaultReadBufferSize);
   this.readCursor = 0;
   this.writeCursor = 0;
   this.outBuffers = [];
   this.outCount = 0;
-}
+};
 
-TBufferedTransport.receiver = function(callback, seqid) {
+TBufferedTransport.receiver = function (callback, seqid) {
   var reader = new TBufferedTransport();
 
-  return function(data) {
+  return function (data) {
     if (reader.writeCursor + data.length > reader.inBuf.length) {
       var buf = new Buffer(reader.writeCursor + data.length);
       reader.inBuf.copy(buf, 0, 0, reader.writeCursor);
@@ -61,11 +61,12 @@
   };
 };
 
-
-TBufferedTransport.prototype.commitPosition = function(){
+TBufferedTransport.prototype.commitPosition = function () {
   var unreadSize = this.writeCursor - this.readCursor;
-  var bufSize = (unreadSize * 2 > this.defaultReadBufferSize) ?
-    unreadSize * 2 : this.defaultReadBufferSize;
+  var bufSize =
+    unreadSize * 2 > this.defaultReadBufferSize
+      ? unreadSize * 2
+      : this.defaultReadBufferSize;
   var buf = new Buffer(bufSize);
   if (unreadSize > 0) {
     this.inBuf.copy(buf, 0, this.readCursor, this.writeCursor);
@@ -75,34 +76,32 @@
   this.inBuf = buf;
 };
 
-TBufferedTransport.prototype.rollbackPosition = function(){
+TBufferedTransport.prototype.rollbackPosition = function () {
   this.readCursor = 0;
-}
+};
 
-  // TODO: Implement open/close support
-TBufferedTransport.prototype.isOpen = function() {
+// TODO: Implement open/close support
+TBufferedTransport.prototype.isOpen = function () {
   return true;
 };
 
-TBufferedTransport.prototype.open = function() {
-};
+TBufferedTransport.prototype.open = function () {};
 
-TBufferedTransport.prototype.close = function() {
-};
+TBufferedTransport.prototype.close = function () {};
 
-  // Set the seqid of the message in the client
-  // So that callbacks can be found
-TBufferedTransport.prototype.setCurrSeqId = function(seqid) {
+// Set the seqid of the message in the client
+// So that callbacks can be found
+TBufferedTransport.prototype.setCurrSeqId = function (seqid) {
   this._seqid = seqid;
 };
 
-TBufferedTransport.prototype.ensureAvailable = function(len) {
+TBufferedTransport.prototype.ensureAvailable = function (len) {
   if (this.readCursor + len > this.writeCursor) {
     throw new InputBufferUnderrunError();
   }
 };
 
-TBufferedTransport.prototype.read = function(len) {
+TBufferedTransport.prototype.read = function (len) {
   this.ensureAvailable(len);
   var buf = new Buffer(len);
   this.inBuf.copy(buf, 0, this.readCursor, this.readCursor + len);
@@ -110,57 +109,61 @@
   return buf;
 };
 
-TBufferedTransport.prototype.readByte = function() {
+TBufferedTransport.prototype.readByte = function () {
   this.ensureAvailable(1);
   return binary.readByte(this.inBuf[this.readCursor++]);
 };
 
-TBufferedTransport.prototype.readI16 = function() {
+TBufferedTransport.prototype.readI16 = function () {
   this.ensureAvailable(2);
   var i16 = binary.readI16(this.inBuf, this.readCursor);
   this.readCursor += 2;
   return i16;
 };
 
-TBufferedTransport.prototype.readI32 = function() {
+TBufferedTransport.prototype.readI32 = function () {
   this.ensureAvailable(4);
   var i32 = binary.readI32(this.inBuf, this.readCursor);
   this.readCursor += 4;
   return i32;
 };
 
-TBufferedTransport.prototype.readDouble = function() {
+TBufferedTransport.prototype.readDouble = function () {
   this.ensureAvailable(8);
   var d = binary.readDouble(this.inBuf, this.readCursor);
   this.readCursor += 8;
   return d;
 };
 
-TBufferedTransport.prototype.readString = function(len) {
+TBufferedTransport.prototype.readString = function (len) {
   this.ensureAvailable(len);
-  var str = this.inBuf.toString('utf8', this.readCursor, this.readCursor + len);
+  var str = this.inBuf.toString("utf8", this.readCursor, this.readCursor + len);
   this.readCursor += len;
   return str;
 };
 
-TBufferedTransport.prototype.borrow = function() {
-  var obj = {buf: this.inBuf, readIndex: this.readCursor, writeIndex: this.writeCursor};
+TBufferedTransport.prototype.borrow = function () {
+  var obj = {
+    buf: this.inBuf,
+    readIndex: this.readCursor,
+    writeIndex: this.writeCursor,
+  };
   return obj;
 };
 
-TBufferedTransport.prototype.consume = function(bytesConsumed) {
+TBufferedTransport.prototype.consume = function (bytesConsumed) {
   this.readCursor += bytesConsumed;
 };
 
-TBufferedTransport.prototype.write = function(buf) {
-  if (typeof(buf) === "string") {
-    buf = new Buffer(buf, 'utf8');
+TBufferedTransport.prototype.write = function (buf) {
+  if (typeof buf === "string") {
+    buf = new Buffer(buf, "utf8");
   }
   this.outBuffers.push(buf);
   this.outCount += buf.length;
 };
 
-TBufferedTransport.prototype.flush = function() {
+TBufferedTransport.prototype.flush = function () {
   // If the seqid of the callback is available pass it to the onFlush
   // Then remove the current seqid
   var seqid = this._seqid;
@@ -171,8 +174,8 @@
   }
 
   var msg = new Buffer(this.outCount),
-      pos = 0;
-  this.outBuffers.forEach(function(buf) {
+    pos = 0;
+  this.outBuffers.forEach(function (buf) {
     buf.copy(msg, pos, 0);
     pos += buf.length;
   });
@@ -184,4 +187,4 @@
 
   this.outBuffers = [];
   this.outCount = 0;
-}
+};
diff --git a/lib/nodejs/lib/thrift/compact_protocol.js b/lib/nodejs/lib/thrift/compact_protocol.js
index 302a88d..e946dc8 100644
--- a/lib/nodejs/lib/thrift/compact_protocol.js
+++ b/lib/nodejs/lib/thrift/compact_protocol.js
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-var log = require('./log');
-var Int64 = require('node-int64');
-var Thrift = require('./thrift');
+var log = require("./log");
+var Int64 = require("node-int64");
+var Thrift = require("./thrift");
 var Type = Thrift.Type;
 
 module.exports = TCompactProtocol;
@@ -50,59 +50,58 @@
   this.container_limit_ = 0;
   this.booleanField_ = {
     name: null,
-    hasBoolValue: false
+    hasBoolValue: false,
   };
   this.boolValue_ = {
     hasBoolValue: false,
-    boolValue: false
+    boolValue: false,
   };
-};
-
+}
 
 //
 // Compact Protocol Constants
 //
 
 /**
-  * Compact Protocol ID number.
-  * @readonly
-  * @const {number} PROTOCOL_ID
-  */
-TCompactProtocol.PROTOCOL_ID = -126;  //1000 0010
+ * Compact Protocol ID number.
+ * @readonly
+ * @const {number} PROTOCOL_ID
+ */
+TCompactProtocol.PROTOCOL_ID = -126; //1000 0010
 
 /**
-  * Compact Protocol version number.
-  * @readonly
-  * @const {number} VERSION_N
-  */
+ * Compact Protocol version number.
+ * @readonly
+ * @const {number} VERSION_N
+ */
 TCompactProtocol.VERSION_N = 1;
 
 /**
-  * Compact Protocol version mask for combining protocol version and message type in one byte.
-  * @readonly
-  * @const {number} VERSION_MASK
-  */
+ * Compact Protocol version mask for combining protocol version and message type in one byte.
+ * @readonly
+ * @const {number} VERSION_MASK
+ */
 TCompactProtocol.VERSION_MASK = 0x1f; //0001 1111
 
 /**
-  * Compact Protocol message type mask for combining protocol version and message type in one byte.
-  * @readonly
-  * @const {number} TYPE_MASK
-  */
-TCompactProtocol.TYPE_MASK = -32;     //1110 0000
+ * Compact Protocol message type mask for combining protocol version and message type in one byte.
+ * @readonly
+ * @const {number} TYPE_MASK
+ */
+TCompactProtocol.TYPE_MASK = -32; //1110 0000
 
 /**
-  * Compact Protocol message type bits for ensuring message type bit size.
-  * @readonly
-  * @const {number} TYPE_BITS
-  */
+ * Compact Protocol message type bits for ensuring message type bit size.
+ * @readonly
+ * @const {number} TYPE_BITS
+ */
 TCompactProtocol.TYPE_BITS = 7; //0000 0111
 
 /**
-  * Compact Protocol message type shift amount for combining protocol version and message type in one byte.
-  * @readonly
-  * @const {number} TYPE_SHIFT_AMOUNT
-  */
+ * Compact Protocol message type shift amount for combining protocol version and message type in one byte.
+ * @readonly
+ * @const {number} TYPE_SHIFT_AMOUNT
+ */
 TCompactProtocol.TYPE_SHIFT_AMOUNT = 5;
 
 /**
@@ -123,19 +122,19 @@
  * @property {number}  CT_STRUCT        - A multifield type.
  */
 TCompactProtocol.Types = {
-  CT_STOP:           0x00,
-  CT_BOOLEAN_TRUE:   0x01,
-  CT_BOOLEAN_FALSE:  0x02,
-  CT_BYTE:           0x03,
-  CT_I16:            0x04,
-  CT_I32:            0x05,
-  CT_I64:            0x06,
-  CT_DOUBLE:         0x07,
-  CT_BINARY:         0x08,
-  CT_LIST:           0x09,
-  CT_SET:            0x0A,
-  CT_MAP:            0x0B,
-  CT_STRUCT:         0x0C
+  CT_STOP: 0x00,
+  CT_BOOLEAN_TRUE: 0x01,
+  CT_BOOLEAN_FALSE: 0x02,
+  CT_BYTE: 0x03,
+  CT_I16: 0x04,
+  CT_I32: 0x05,
+  CT_I64: 0x06,
+  CT_DOUBLE: 0x07,
+  CT_BINARY: 0x08,
+  CT_LIST: 0x09,
+  CT_SET: 0x0a,
+  CT_MAP: 0x0b,
+  CT_STRUCT: 0x0c,
 };
 
 /**
@@ -143,25 +142,24 @@
  * @readonly
  */
 TCompactProtocol.TTypeToCType = [
-  TCompactProtocol.Types.CT_STOP,         // T_STOP
-  0,                                      // unused
+  TCompactProtocol.Types.CT_STOP, // T_STOP
+  0, // unused
   TCompactProtocol.Types.CT_BOOLEAN_TRUE, // T_BOOL
-  TCompactProtocol.Types.CT_BYTE,         // T_BYTE
-  TCompactProtocol.Types.CT_DOUBLE,       // T_DOUBLE
-  0,                                      // unused
-  TCompactProtocol.Types.CT_I16,          // T_I16
-  0,                                      // unused
-  TCompactProtocol.Types.CT_I32,          // T_I32
-  0,                                      // unused
-  TCompactProtocol.Types.CT_I64,          // T_I64
-  TCompactProtocol.Types.CT_BINARY,       // T_STRING
-  TCompactProtocol.Types.CT_STRUCT,       // T_STRUCT
-  TCompactProtocol.Types.CT_MAP,          // T_MAP
-  TCompactProtocol.Types.CT_SET,          // T_SET
-  TCompactProtocol.Types.CT_LIST,         // T_LIST
+  TCompactProtocol.Types.CT_BYTE, // T_BYTE
+  TCompactProtocol.Types.CT_DOUBLE, // T_DOUBLE
+  0, // unused
+  TCompactProtocol.Types.CT_I16, // T_I16
+  0, // unused
+  TCompactProtocol.Types.CT_I32, // T_I32
+  0, // unused
+  TCompactProtocol.Types.CT_I64, // T_I64
+  TCompactProtocol.Types.CT_BINARY, // T_STRING
+  TCompactProtocol.Types.CT_STRUCT, // T_STRUCT
+  TCompactProtocol.Types.CT_MAP, // T_MAP
+  TCompactProtocol.Types.CT_SET, // T_SET
+  TCompactProtocol.Types.CT_LIST, // T_LIST
 ];
 
-
 //
 // Compact Protocol Utilities
 //
@@ -169,7 +167,7 @@
 /**
  * Returns the underlying transport layer.
  * @return {object} The underlying transport layer.
- */TCompactProtocol.prototype.getTransport = function() {
+ */ TCompactProtocol.prototype.getTransport = function () {
   return this.trans;
 };
 
@@ -179,7 +177,7 @@
  * @param {number} ttype - Thrift type value
  * @returns {number} Compact protocol type value
  */
-TCompactProtocol.prototype.getCompactType = function(ttype) {
+TCompactProtocol.prototype.getCompactType = function (ttype) {
   return TCompactProtocol.TTypeToCType[ttype];
 };
 
@@ -189,7 +187,7 @@
  * @param {number} type - Compact Protocol type value
  * @returns {number} Thrift Type value
  */
-TCompactProtocol.prototype.getTType = function(type) {
+TCompactProtocol.prototype.getTType = function (type) {
   switch (type) {
     case Type.STOP:
       return Type.STOP;
@@ -217,12 +215,14 @@
     case TCompactProtocol.Types.CT_STRUCT:
       return Type.STRUCT;
     default:
-      throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Unknown type: " + type);
+      throw new Thrift.TProtocolException(
+        Thrift.TProtocolExceptionType.INVALID_DATA,
+        "Unknown type: " + type,
+      );
   }
   return Type.STOP;
 };
 
-
 //
 // Compact Protocol write operations
 //
@@ -230,7 +230,7 @@
 /**
  * Send any buffered bytes to the end point.
  */
-TCompactProtocol.prototype.flush = function() {
+TCompactProtocol.prototype.flush = function () {
   return this.trans.flush();
 };
 
@@ -240,31 +240,33 @@
  * @param {number} type - The type of message (CALL, REPLY, EXCEPTION, ONEWAY).
  * @param {number} seqid - The call sequence number (if any).
  */
-TCompactProtocol.prototype.writeMessageBegin = function(name, type, seqid) {
+TCompactProtocol.prototype.writeMessageBegin = function (name, type, seqid) {
   this.writeByte(TCompactProtocol.PROTOCOL_ID);
-  this.writeByte((TCompactProtocol.VERSION_N & TCompactProtocol.VERSION_MASK) |
-                     ((type << TCompactProtocol.TYPE_SHIFT_AMOUNT) & TCompactProtocol.TYPE_MASK));
+  this.writeByte(
+    (TCompactProtocol.VERSION_N & TCompactProtocol.VERSION_MASK) |
+      ((type << TCompactProtocol.TYPE_SHIFT_AMOUNT) &
+        TCompactProtocol.TYPE_MASK),
+  );
   this.writeVarint32(seqid);
   this.writeString(name);
 
   // Record client seqid to find callback again
   if (this._seqid) {
-    log.warning('SeqId already set', { 'name': name });
+    log.warning("SeqId already set", { name: name });
   } else {
     this._seqid = seqid;
     this.trans.setCurrSeqId(seqid);
   }
 };
 
-TCompactProtocol.prototype.writeMessageEnd = function() {
-};
+TCompactProtocol.prototype.writeMessageEnd = function () {};
 
-TCompactProtocol.prototype.writeStructBegin = function(name) {
+TCompactProtocol.prototype.writeStructBegin = function (name) {
   this.lastField_.push(this.lastFieldId_);
   this.lastFieldId_ = 0;
 };
 
-TCompactProtocol.prototype.writeStructEnd = function() {
+TCompactProtocol.prototype.writeStructEnd = function () {
   this.lastFieldId_ = this.lastField_.pop();
 };
 
@@ -274,7 +276,7 @@
  * @param {number} type - The field data type (a normal Thrift field Type).
  * @param {number} id - The IDL field Id.
  */
-TCompactProtocol.prototype.writeFieldBegin = function(name, type, id) {
+TCompactProtocol.prototype.writeFieldBegin = function (name, type, id) {
   if (type != Type.BOOL) {
     return this.writeFieldBeginInternal(name, type, id, -1);
   }
@@ -284,10 +286,9 @@
   this.booleanField_.fieldId = id;
 };
 
-TCompactProtocol.prototype.writeFieldEnd = function() {
-};
+TCompactProtocol.prototype.writeFieldEnd = function () {};
 
-TCompactProtocol.prototype.writeFieldStop = function() {
+TCompactProtocol.prototype.writeFieldStop = function () {
   this.writeByte(TCompactProtocol.Types.CT_STOP);
 };
 
@@ -297,80 +298,85 @@
  * @param {number} valType - The Thrift type of the map values.
  * @param {number} size - The number of k/v pairs in the map.
  */
-TCompactProtocol.prototype.writeMapBegin = function(keyType, valType, size) {
+TCompactProtocol.prototype.writeMapBegin = function (keyType, valType, size) {
   if (size === 0) {
     this.writeByte(0);
   } else {
     this.writeVarint32(size);
-    this.writeByte(this.getCompactType(keyType) << 4 | this.getCompactType(valType));
+    this.writeByte(
+      (this.getCompactType(keyType) << 4) | this.getCompactType(valType),
+    );
   }
 };
 
-TCompactProtocol.prototype.writeMapEnd = function() {
-};
+TCompactProtocol.prototype.writeMapEnd = function () {};
 
 /**
  * Writes a list collection header
  * @param {number} elemType - The Thrift type of the list elements.
  * @param {number} size - The number of elements in the list.
  */
-TCompactProtocol.prototype.writeListBegin = function(elemType, size) {
+TCompactProtocol.prototype.writeListBegin = function (elemType, size) {
   this.writeCollectionBegin(elemType, size);
 };
 
-TCompactProtocol.prototype.writeListEnd = function() {
-};
+TCompactProtocol.prototype.writeListEnd = function () {};
 
 /**
  * Writes a set collection header
  * @param {number} elemType - The Thrift type of the set elements.
  * @param {number} size - The number of elements in the set.
  */
-TCompactProtocol.prototype.writeSetBegin = function(elemType, size) {
+TCompactProtocol.prototype.writeSetBegin = function (elemType, size) {
   this.writeCollectionBegin(elemType, size);
 };
 
-TCompactProtocol.prototype.writeSetEnd = function() {
-};
+TCompactProtocol.prototype.writeSetEnd = function () {};
 
-TCompactProtocol.prototype.writeBool = function(value) {
+TCompactProtocol.prototype.writeBool = function (value) {
   if (this.booleanField_.name !== null) {
     // we haven't written the field header yet
-    this.writeFieldBeginInternal(this.booleanField_.name,
-                                 this.booleanField_.fieldType,
-                                 this.booleanField_.fieldId,
-                                 (value ? TCompactProtocol.Types.CT_BOOLEAN_TRUE
-                                          : TCompactProtocol.Types.CT_BOOLEAN_FALSE));
+    this.writeFieldBeginInternal(
+      this.booleanField_.name,
+      this.booleanField_.fieldType,
+      this.booleanField_.fieldId,
+      value
+        ? TCompactProtocol.Types.CT_BOOLEAN_TRUE
+        : TCompactProtocol.Types.CT_BOOLEAN_FALSE,
+    );
     this.booleanField_.name = null;
   } else {
     // we're not part of a field, so just write the value
-    this.writeByte((value ? TCompactProtocol.Types.CT_BOOLEAN_TRUE
-                            : TCompactProtocol.Types.CT_BOOLEAN_FALSE));
+    this.writeByte(
+      value
+        ? TCompactProtocol.Types.CT_BOOLEAN_TRUE
+        : TCompactProtocol.Types.CT_BOOLEAN_FALSE,
+    );
   }
 };
 
-TCompactProtocol.prototype.writeByte = function(b) {
+TCompactProtocol.prototype.writeByte = function (b) {
   this.trans.write(new Buffer([b]));
 };
 
-TCompactProtocol.prototype.writeI16 = function(i16) {
+TCompactProtocol.prototype.writeI16 = function (i16) {
   this.writeVarint32(this.i32ToZigzag(i16));
 };
 
-TCompactProtocol.prototype.writeI32 = function(i32) {
+TCompactProtocol.prototype.writeI32 = function (i32) {
   this.writeVarint32(this.i32ToZigzag(i32));
 };
 
-TCompactProtocol.prototype.writeI64 = function(i64) {
+TCompactProtocol.prototype.writeI64 = function (i64) {
   this.writeVarint64(this.i64ToZigzag(i64));
 };
 
 // Little-endian, unlike TBinaryProtocol
-TCompactProtocol.prototype.writeDouble = function(v) {
+TCompactProtocol.prototype.writeDouble = function (v) {
   var buff = new Buffer(8);
   var m, e, c;
 
-  buff[7] = (v < 0 ? 0x80 : 0x00);
+  buff[7] = v < 0 ? 0x80 : 0x00;
 
   v = Math.abs(v);
   if (v !== v) {
@@ -388,22 +394,17 @@
       c *= 2;
     }
 
-    if (e + 1023 >= 2047)
-    {
+    if (e + 1023 >= 2047) {
       // Overflow
       m = 0;
       e = 2047;
-    }
-    else if (e + 1023 >= 1)
-    {
+    } else if (e + 1023 >= 1) {
       // Normalized - term order matters, as Math.pow(2, 52-e) and v*Math.pow(2, 52) can overflow
-      m = (v*c-1) * POW_52;
+      m = (v * c - 1) * POW_52;
       e += 1023;
-    }
-    else
-    {
+    } else {
       // Denormalized - also catches the '0' case, somewhat by chance
-      m = (v * POW_1022) * POW_52;
+      m = v * POW_1022 * POW_52;
       e = 0;
     }
   }
@@ -428,45 +429,53 @@
   this.trans.write(buff);
 };
 
-TCompactProtocol.prototype.writeStringOrBinary = function(name, encoding, arg) {
-  if (typeof arg === 'string') {
-    this.writeVarint32(Buffer.byteLength(arg, encoding)) ;
+TCompactProtocol.prototype.writeStringOrBinary = function (
+  name,
+  encoding,
+  arg,
+) {
+  if (typeof arg === "string") {
+    this.writeVarint32(Buffer.byteLength(arg, encoding));
     this.trans.write(new Buffer(arg, encoding));
-  } else if (arg instanceof Buffer ||
-             Object.prototype.toString.call(arg) == '[object Uint8Array]') {
+  } else if (
+    arg instanceof Buffer ||
+    Object.prototype.toString.call(arg) == "[object Uint8Array]"
+  ) {
     // Buffers in Node.js under Browserify may extend UInt8Array instead of
     // defining a new object. We detect them here so we can write them
     // correctly
     this.writeVarint32(arg.length);
     this.trans.write(arg);
   } else {
-    throw new Error(name + ' called without a string/Buffer argument: ' + arg);
+    throw new Error(name + " called without a string/Buffer argument: " + arg);
   }
 };
 
-TCompactProtocol.prototype.writeString = function(arg) {
-  this.writeStringOrBinary('writeString', 'utf8', arg);
+TCompactProtocol.prototype.writeString = function (arg) {
+  this.writeStringOrBinary("writeString", "utf8", arg);
 };
 
-TCompactProtocol.prototype.writeBinary = function(arg) {
-  this.writeStringOrBinary('writeBinary', 'binary', arg);
+TCompactProtocol.prototype.writeBinary = function (arg) {
+  this.writeStringOrBinary("writeBinary", "binary", arg);
 };
 
-
 //
 // Compact Protocol internal write methods
 //
 
-TCompactProtocol.prototype.writeFieldBeginInternal = function(name,
-                                                              fieldType,
-                                                              fieldId,
-                                                              typeOverride) {
+TCompactProtocol.prototype.writeFieldBeginInternal = function (
+  name,
+  fieldType,
+  fieldId,
+  typeOverride,
+) {
   //If there's a type override, use that.
-  var typeToWrite = (typeOverride == -1 ? this.getCompactType(fieldType) : typeOverride);
+  var typeToWrite =
+    typeOverride == -1 ? this.getCompactType(fieldType) : typeOverride;
   //Check if we can delta encode the field id
   if (fieldId > this.lastFieldId_ && fieldId - this.lastFieldId_ <= 15) {
     //Include the type delta with the field ID
-    this.writeByte((fieldId - this.lastFieldId_) << 4 | typeToWrite);
+    this.writeByte(((fieldId - this.lastFieldId_) << 4) | typeToWrite);
   } else {
     //Write separate type and ID values
     this.writeByte(typeToWrite);
@@ -475,10 +484,10 @@
   this.lastFieldId_ = fieldId;
 };
 
-TCompactProtocol.prototype.writeCollectionBegin = function(elemType, size) {
+TCompactProtocol.prototype.writeCollectionBegin = function (elemType, size) {
   if (size <= 14) {
     //Combine size and type in one byte if possible
-    this.writeByte(size << 4 | this.getCompactType(elemType));
+    this.writeByte((size << 4) | this.getCompactType(elemType));
   } else {
     this.writeByte(0xf0 | this.getCompactType(elemType));
     this.writeVarint32(size);
@@ -488,20 +497,20 @@
 /**
  * Write an i32 as a varint. Results in 1-5 bytes on the wire.
  */
-TCompactProtocol.prototype.writeVarint32 = function(n) {
+TCompactProtocol.prototype.writeVarint32 = function (n) {
   var buf = new Buffer(5);
   var wsize = 0;
   while (true) {
-    if ((n & ~0x7F) === 0) {
+    if ((n & ~0x7f) === 0) {
       buf[wsize++] = n;
       break;
     } else {
-      buf[wsize++] = ((n & 0x7F) | 0x80);
+      buf[wsize++] = (n & 0x7f) | 0x80;
       n = n >>> 7;
     }
   }
   var wbuf = new Buffer(wsize);
-  buf.copy(wbuf,0,0,wsize);
+  buf.copy(wbuf, 0, 0, wsize);
   this.trans.write(wbuf);
 };
 
@@ -509,12 +518,15 @@
  * Write an i64 as a varint. Results in 1-10 bytes on the wire.
  * N.B. node-int64 is always big endian
  */
-TCompactProtocol.prototype.writeVarint64 = function(n) {
-  if (typeof n === "number"){
+TCompactProtocol.prototype.writeVarint64 = function (n) {
+  if (typeof n === "number") {
     n = new Int64(n);
   }
-  if (! (n instanceof Int64)) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Expected Int64 or Number, found: " + n);
+  if (!(n instanceof Int64)) {
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.INVALID_DATA,
+      "Expected Int64 or Number, found: " + n,
+    );
   }
 
   var buf = new Buffer(10);
@@ -523,11 +535,11 @@
   var lo = n.buffer.readUInt32BE(4, true);
   var mask = 0;
   while (true) {
-    if (((lo & ~0x7F) === 0) && (hi === 0)) {
+    if ((lo & ~0x7f) === 0 && hi === 0) {
       buf[wsize++] = lo;
       break;
     } else {
-      buf[wsize++] = ((lo & 0x7F) | 0x80);
+      buf[wsize++] = (lo & 0x7f) | 0x80;
       mask = hi << 25;
       lo = lo >>> 7;
       hi = hi >>> 7;
@@ -535,7 +547,7 @@
     }
   }
   var wbuf = new Buffer(wsize);
-  buf.copy(wbuf,0,0,wsize);
+  buf.copy(wbuf, 0, 0, wsize);
   this.trans.write(wbuf);
 };
 
@@ -543,20 +555,23 @@
  * Convert l into a zigzag long. This allows negative numbers to be
  * represented compactly as a varint.
  */
-TCompactProtocol.prototype.i64ToZigzag = function(l) {
-  if (typeof l === 'string') {
+TCompactProtocol.prototype.i64ToZigzag = function (l) {
+  if (typeof l === "string") {
     l = new Int64(parseInt(l, 10));
-  } else if (typeof l === 'number') {
+  } else if (typeof l === "number") {
     l = new Int64(l);
   }
-  if (! (l instanceof Int64)) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Expected Int64 or Number, found: " + l);
+  if (!(l instanceof Int64)) {
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.INVALID_DATA,
+      "Expected Int64 or Number, found: " + l,
+    );
   }
   var hi = l.buffer.readUInt32BE(0, true);
   var lo = l.buffer.readUInt32BE(4, true);
   var sign = hi >>> 31;
-  hi = ((hi << 1) | (lo >>> 31)) ^ ((!!sign) ? 0xFFFFFFFF : 0);
-  lo = (lo << 1) ^ ((!!sign) ? 0xFFFFFFFF : 0);
+  hi = ((hi << 1) | (lo >>> 31)) ^ (!!sign ? 0xffffffff : 0);
+  lo = (lo << 1) ^ (!!sign ? 0xffffffff : 0);
   return new Int64(hi, lo);
 };
 
@@ -564,29 +579,36 @@
  * Convert n into a zigzag int. This allows negative numbers to be
  * represented compactly as a varint.
  */
-TCompactProtocol.prototype.i32ToZigzag = function(n) {
-  return (n << 1) ^ ((n & 0x80000000) ? 0xFFFFFFFF : 0);
+TCompactProtocol.prototype.i32ToZigzag = function (n) {
+  return (n << 1) ^ (n & 0x80000000 ? 0xffffffff : 0);
 };
 
-
 //
 // Compact Protocol read operations
 //
 
-TCompactProtocol.prototype.readMessageBegin = function() {
+TCompactProtocol.prototype.readMessageBegin = function () {
   //Read protocol ID
   var protocolId = this.trans.readByte();
   if (protocolId != TCompactProtocol.PROTOCOL_ID) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "Bad protocol identifier " + protocolId);
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.BAD_VERSION,
+      "Bad protocol identifier " + protocolId,
+    );
   }
 
   //Read Version and Type
   var versionAndType = this.trans.readByte();
-  var version = (versionAndType & TCompactProtocol.VERSION_MASK);
+  var version = versionAndType & TCompactProtocol.VERSION_MASK;
   if (version != TCompactProtocol.VERSION_N) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.BAD_VERSION, "Bad protocol version " + version);
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.BAD_VERSION,
+      "Bad protocol version " + version,
+    );
   }
-  var type = ((versionAndType >> TCompactProtocol.TYPE_SHIFT_AMOUNT) & TCompactProtocol.TYPE_BITS);
+  var type =
+    (versionAndType >> TCompactProtocol.TYPE_SHIFT_AMOUNT) &
+    TCompactProtocol.TYPE_BITS;
 
   //Read SeqId
   var seqid = this.readVarint32();
@@ -594,62 +616,65 @@
   //Read name
   var name = this.readString();
 
-  return {fname: name, mtype: type, rseqid: seqid};
+  return { fname: name, mtype: type, rseqid: seqid };
 };
 
-TCompactProtocol.prototype.readMessageEnd = function() {
-};
+TCompactProtocol.prototype.readMessageEnd = function () {};
 
-TCompactProtocol.prototype.readStructBegin = function() {
+TCompactProtocol.prototype.readStructBegin = function () {
   this.lastField_.push(this.lastFieldId_);
   this.lastFieldId_ = 0;
-  return {fname: ''};
+  return { fname: "" };
 };
 
-TCompactProtocol.prototype.readStructEnd = function() {
+TCompactProtocol.prototype.readStructEnd = function () {
   this.lastFieldId_ = this.lastField_.pop();
 };
 
-TCompactProtocol.prototype.readFieldBegin = function() {
+TCompactProtocol.prototype.readFieldBegin = function () {
   var fieldId = 0;
   var b = this.trans.readByte(b);
-  var type = (b & 0x0f);
+  var type = b & 0x0f;
 
   if (type == TCompactProtocol.Types.CT_STOP) {
-    return {fname: null, ftype: Thrift.Type.STOP, fid: 0};
+    return { fname: null, ftype: Thrift.Type.STOP, fid: 0 };
   }
 
   //Mask off the 4 MSB of the type header to check for field id delta.
-  var modifier = ((b & 0x000000f0) >>> 4);
+  var modifier = (b & 0x000000f0) >>> 4;
   if (modifier === 0) {
     //If not a delta read the field id.
     fieldId = this.readI16();
   } else {
     //Recover the field id from the delta
-    fieldId = (this.lastFieldId_ + modifier);
+    fieldId = this.lastFieldId_ + modifier;
   }
   var fieldType = this.getTType(type);
 
   //Boolean are encoded with the type
-  if (type == TCompactProtocol.Types.CT_BOOLEAN_TRUE ||
-      type == TCompactProtocol.Types.CT_BOOLEAN_FALSE) {
+  if (
+    type == TCompactProtocol.Types.CT_BOOLEAN_TRUE ||
+    type == TCompactProtocol.Types.CT_BOOLEAN_FALSE
+  ) {
     this.boolValue_.hasBoolValue = true;
     this.boolValue_.boolValue =
-      (type == TCompactProtocol.Types.CT_BOOLEAN_TRUE ? true : false);
+      type == TCompactProtocol.Types.CT_BOOLEAN_TRUE ? true : false;
   }
 
   //Save the new field for the next delta computation.
   this.lastFieldId_ = fieldId;
-  return {fname: null, ftype: fieldType, fid: fieldId};
+  return { fname: null, ftype: fieldType, fid: fieldId };
 };
 
-TCompactProtocol.prototype.readFieldEnd = function() {
-};
+TCompactProtocol.prototype.readFieldEnd = function () {};
 
-TCompactProtocol.prototype.readMapBegin = function() {
+TCompactProtocol.prototype.readMapBegin = function () {
   var msize = this.readVarint32();
   if (msize < 0) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative map size");
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.NEGATIVE_SIZE,
+      "Negative map size",
+    );
   }
 
   var kvType = 0;
@@ -659,13 +684,12 @@
 
   var keyType = this.getTType((kvType & 0xf0) >>> 4);
   var valType = this.getTType(kvType & 0xf);
-  return {ktype: keyType, vtype: valType, size: msize};
+  return { ktype: keyType, vtype: valType, size: msize };
 };
 
-TCompactProtocol.prototype.readMapEnd = function() {
-};
+TCompactProtocol.prototype.readMapEnd = function () {};
 
-TCompactProtocol.prototype.readListBegin = function() {
+TCompactProtocol.prototype.readListBegin = function () {
   var size_and_type = this.trans.readByte();
 
   var lsize = (size_and_type >>> 4) & 0x0000000f;
@@ -674,25 +698,26 @@
   }
 
   if (lsize < 0) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative list size");
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.NEGATIVE_SIZE,
+      "Negative list size",
+    );
   }
 
   var elemType = this.getTType(size_and_type & 0x0000000f);
 
-  return {etype: elemType, size: lsize};
+  return { etype: elemType, size: lsize };
 };
 
-TCompactProtocol.prototype.readListEnd = function() {
-};
+TCompactProtocol.prototype.readListEnd = function () {};
 
-TCompactProtocol.prototype.readSetBegin = function() {
+TCompactProtocol.prototype.readSetBegin = function () {
   return this.readListBegin();
 };
 
-TCompactProtocol.prototype.readSetEnd = function() {
-};
+TCompactProtocol.prototype.readSetEnd = function () {};
 
-TCompactProtocol.prototype.readBool = function() {
+TCompactProtocol.prototype.readBool = function () {
   var value = false;
   var rsize = 0;
   if (this.boolValue_.hasBoolValue === true) {
@@ -701,50 +726,50 @@
   } else {
     var res = this.trans.readByte();
     rsize = res.rsize;
-    value = (res.value == TCompactProtocol.Types.CT_BOOLEAN_TRUE);
+    value = res.value == TCompactProtocol.Types.CT_BOOLEAN_TRUE;
   }
   return value;
 };
 
-TCompactProtocol.prototype.readByte = function() {
+TCompactProtocol.prototype.readByte = function () {
   return this.trans.readByte();
 };
 
-TCompactProtocol.prototype.readI16 = function() {
+TCompactProtocol.prototype.readI16 = function () {
   return this.readI32();
 };
 
-TCompactProtocol.prototype.readI32 = function() {
+TCompactProtocol.prototype.readI32 = function () {
   return this.zigzagToI32(this.readVarint32());
 };
 
-TCompactProtocol.prototype.readI64 = function() {
+TCompactProtocol.prototype.readI64 = function () {
   return this.zigzagToI64(this.readVarint64());
 };
 
 // Little-endian, unlike TBinaryProtocol
-TCompactProtocol.prototype.readDouble = function() {
+TCompactProtocol.prototype.readDouble = function () {
   var buff = this.trans.read(8);
   var off = 0;
 
   var signed = buff[off + 7] & 0x80;
-  var e = (buff[off+6] & 0xF0) >> 4;
-  e += (buff[off+7] & 0x7F) << 4;
+  var e = (buff[off + 6] & 0xf0) >> 4;
+  e += (buff[off + 7] & 0x7f) << 4;
 
   var m = buff[off];
-  m += buff[off+1] << 8;
-  m += buff[off+2] << 16;
-  m += buff[off+3] * POW_24;
-  m += buff[off+4] * POW_32;
-  m += buff[off+5] * POW_40;
-  m += (buff[off+6] & 0x0F) * POW_48;
+  m += buff[off + 1] << 8;
+  m += buff[off + 2] << 16;
+  m += buff[off + 3] * POW_24;
+  m += buff[off + 4] * POW_32;
+  m += buff[off + 5] * POW_40;
+  m += (buff[off + 6] & 0x0f) * POW_48;
 
   switch (e) {
     case 0:
       e = -1022;
       break;
     case 2047:
-      return m ? NaN : (signed ? -Infinity : Infinity);
+      return m ? NaN : signed ? -Infinity : Infinity;
     default:
       m += POW_52;
       e -= 1023;
@@ -757,19 +782,22 @@
   return m * Math.pow(2, e - 52);
 };
 
-TCompactProtocol.prototype.readBinary = function() {
+TCompactProtocol.prototype.readBinary = function () {
   var size = this.readVarint32();
   if (size === 0) {
     return new Buffer(0);
   }
 
   if (size < 0) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative binary size");
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.NEGATIVE_SIZE,
+      "Negative binary size",
+    );
   }
   return this.trans.read(size);
 };
 
-TCompactProtocol.prototype.readString = function() {
+TCompactProtocol.prototype.readString = function () {
   var size = this.readVarint32();
   // Catch empty string case
   if (size === 0) {
@@ -778,12 +806,14 @@
 
   // Catch error cases
   if (size < 0) {
-    throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.NEGATIVE_SIZE, "Negative string size");
+    throw new Thrift.TProtocolException(
+      Thrift.TProtocolExceptionType.NEGATIVE_SIZE,
+      "Negative string size",
+    );
   }
   return this.trans.readString(size);
 };
 
-
 //
 // Compact Protocol internal read operations
 //
@@ -792,7 +822,7 @@
  * Read an i32 from the wire as a varint. The MSB of each byte is set
  * if there is another byte to follow. This can read up to 5 bytes.
  */
-TCompactProtocol.prototype.readVarint32 = function() {
+TCompactProtocol.prototype.readVarint32 = function () {
   return this.readVarint64().toNumber();
 };
 
@@ -800,28 +830,31 @@
  * Read an i64 from the wire as a proper varint. The MSB of each byte is set
  * if there is another byte to follow. This can read up to 10 bytes.
  */
-TCompactProtocol.prototype.readVarint64 = function() {
+TCompactProtocol.prototype.readVarint64 = function () {
   var rsize = 0;
   var lo = 0;
   var hi = 0;
   var shift = 0;
   while (true) {
     var b = this.trans.readByte();
-    rsize ++;
+    rsize++;
     if (shift <= 25) {
       lo = lo | ((b & 0x7f) << shift);
     } else if (25 < shift && shift < 32) {
       lo = lo | ((b & 0x7f) << shift);
-      hi = hi | ((b & 0x7f) >>> (32-shift));
+      hi = hi | ((b & 0x7f) >>> (32 - shift));
     } else {
-      hi = hi | ((b & 0x7f) << (shift-32));
+      hi = hi | ((b & 0x7f) << (shift - 32));
     }
     shift += 7;
     if (!(b & 0x80)) {
       break;
     }
     if (rsize >= 10) {
-      throw new Thrift.TProtocolException(Thrift.TProtocolExceptionType.INVALID_DATA, "Variable-length int over 10 bytes.");
+      throw new Thrift.TProtocolException(
+        Thrift.TProtocolExceptionType.INVALID_DATA,
+        "Variable-length int over 10 bytes.",
+      );
     }
   }
   return new Int64(hi, lo);
@@ -830,14 +863,14 @@
 /**
  * Convert from zigzag int to int.
  */
-TCompactProtocol.prototype.zigzagToI32 = function(n) {
+TCompactProtocol.prototype.zigzagToI32 = function (n) {
   return (n >>> 1) ^ (-1 * (n & 1));
 };
 
 /**
  * Convert from zigzag long to long.
  */
-TCompactProtocol.prototype.zigzagToI64 = function(n) {
+TCompactProtocol.prototype.zigzagToI64 = function (n) {
   var hi = n.buffer.readUInt32BE(0, true);
   var lo = n.buffer.readUInt32BE(4, true);
 
@@ -846,13 +879,13 @@
   var hi_neg = neg.buffer.readUInt32BE(0, true);
   var lo_neg = neg.buffer.readUInt32BE(4, true);
 
-  var hi_lo = (hi << 31);
-  hi = (hi >>> 1) ^ (hi_neg);
-  lo = ((lo >>> 1) | hi_lo) ^ (lo_neg);
+  var hi_lo = hi << 31;
+  hi = (hi >>> 1) ^ hi_neg;
+  lo = ((lo >>> 1) | hi_lo) ^ lo_neg;
   return new Int64(hi, lo);
 };
 
-TCompactProtocol.prototype.skip = function(type) {
+TCompactProtocol.prototype.skip = function (type) {
   switch (type) {
     case Type.BOOL:
       this.readBool();
@@ -910,6 +943,6 @@
       this.readListEnd();
       break;
     default:
-      throw new  Error("Invalid type: " + type);
+      throw new Error("Invalid type: " + type);
   }
 };
diff --git a/lib/nodejs/lib/thrift/connection.js b/lib/nodejs/lib/thrift/connection.js
index b4e5a05..dcade80 100644
--- a/lib/nodejs/lib/thrift/connection.js
+++ b/lib/nodejs/lib/thrift/connection.js
@@ -16,29 +16,29 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
-var EventEmitter = require('events').EventEmitter;
-var constants = require('constants');
-var net = require('net');
-var tls = require('tls');
-var thrift = require('./thrift');
-var log = require('./log');
+var util = require("util");
+var EventEmitter = require("events").EventEmitter;
+var constants = require("constants");
+var net = require("net");
+var tls = require("tls");
+var thrift = require("./thrift");
+var log = require("./log");
 
-var TBufferedTransport = require('./buffered_transport');
-var TBinaryProtocol = require('./binary_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var TBufferedTransport = require("./buffered_transport");
+var TBinaryProtocol = require("./binary_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
-var createClient = require('./create_client');
+var createClient = require("./create_client");
 
-var binary = require('./binary');
+var binary = require("./binary");
 
-var Connection = exports.Connection = function(stream, options) {
+var Connection = (exports.Connection = function (stream, options) {
   var self = this;
   EventEmitter.call(this);
 
   this.seqId2Service = {};
   this.connection = stream;
-  this.ssl = (stream.encrypted);
+  this.ssl = stream.encrypted;
   this.options = options || {};
   this.transport = this.options.transport || TBufferedTransport;
   this.protocol = this.options.protocol || TBinaryProtocol;
@@ -48,123 +48,139 @@
   this.initialize_retry_vars();
 
   this._debug = this.options.debug || false;
-  if (this.options.max_attempts &&
-      !isNaN(this.options.max_attempts) &&
-      this.options.max_attempts > 0) {
-     this.max_attempts = +this.options.max_attempts;
+  if (
+    this.options.max_attempts &&
+    !isNaN(this.options.max_attempts) &&
+    this.options.max_attempts > 0
+  ) {
+    this.max_attempts = +this.options.max_attempts;
   }
   this.retry_max_delay = null;
-  if (this.options.retry_max_delay !== undefined &&
-      !isNaN(this.options.retry_max_delay) &&
-      this.options.retry_max_delay > 0) {
-     this.retry_max_delay = this.options.retry_max_delay;
+  if (
+    this.options.retry_max_delay !== undefined &&
+    !isNaN(this.options.retry_max_delay) &&
+    this.options.retry_max_delay > 0
+  ) {
+    this.retry_max_delay = this.options.retry_max_delay;
   }
   this.connect_timeout = false;
-  if (this.options.connect_timeout &&
-      !isNaN(this.options.connect_timeout) &&
-      this.options.connect_timeout > 0) {
-     this.connect_timeout = +this.options.connect_timeout;
+  if (
+    this.options.connect_timeout &&
+    !isNaN(this.options.connect_timeout) &&
+    this.options.connect_timeout > 0
+  ) {
+    this.connect_timeout = +this.options.connect_timeout;
   }
 
-  this.connection.addListener(this.ssl ? "secureConnect" : "connect", function() {
-    self.connected = true;
+  this.connection.addListener(
+    this.ssl ? "secureConnect" : "connect",
+    function () {
+      self.connected = true;
 
-    this.setTimeout(self.options.timeout || 0);
-    this.setNoDelay();
-    this.frameLeft = 0;
-    this.framePos = 0;
-    this.frame = null;
-    self.initialize_retry_vars();
-    self.flush_offline_queue();
+      this.setTimeout(self.options.timeout || 0);
+      this.setNoDelay();
+      this.frameLeft = 0;
+      this.framePos = 0;
+      this.frame = null;
+      self.initialize_retry_vars();
+      self.flush_offline_queue();
 
-    self.emit("connect");
-  });
+      self.emit("connect");
+    },
+  );
 
-  this.connection.addListener("error", function(err) {
+  this.connection.addListener("error", function (err) {
     // Only emit the error if no-one else is listening on the connection
     // or if someone is listening on us, because Node turns unhandled
     // 'error' events into exceptions.
-    if (self.connection.listeners('error').length === 1 ||
-        self.listeners('error').length > 0) {
+    if (
+      self.connection.listeners("error").length === 1 ||
+      self.listeners("error").length > 0
+    ) {
       self.emit("error", err);
     }
   });
 
   // Add a close listener
-  this.connection.addListener("close", function() {
+  this.connection.addListener("close", function () {
     self.connection_gone(); // handle close event. try to reconnect
   });
 
-  this.connection.addListener("timeout", function() {
+  this.connection.addListener("timeout", function () {
     self.emit("timeout");
   });
 
-  this.connection.addListener("data", self.transport.receiver(function(transport_with_data) {
-    var message = new self.protocol(transport_with_data);
-    try {
-      while (true) {
-        var header = message.readMessageBegin();
-        var dummy_seqid = header.rseqid * -1;
-        var client = self.client;
-        //The Multiplexed Protocol stores a hash of seqid to service names
-        //  in seqId2Service. If the SeqId is found in the hash we need to
-        //  lookup the appropriate client for this call.
-        //  The connection.client object is a single client object when not
-        //  multiplexing, when using multiplexing it is a service name keyed
-        //  hash of client objects.
-        //NOTE: The 2 way interdependencies between protocols, transports,
-        //  connections and clients in the Node.js implementation are irregular
-        //  and make the implementation difficult to extend and maintain. We
-        //  should bring this stuff inline with typical thrift I/O stack
-        //  operation soon.
-        //  --ra
-        var service_name = self.seqId2Service[header.rseqid];
-        if (service_name) {
-          client = self.client[service_name];
-        }
-        /*jshint -W083 */
-        client._reqs[dummy_seqid] = function(err, success){
-          transport_with_data.commitPosition();
-
-          var callback = client._reqs[header.rseqid];
-          delete client._reqs[header.rseqid];
+  this.connection.addListener(
+    "data",
+    self.transport.receiver(function (transport_with_data) {
+      var message = new self.protocol(transport_with_data);
+      try {
+        while (true) {
+          var header = message.readMessageBegin();
+          var dummy_seqid = header.rseqid * -1;
+          var client = self.client;
+          //The Multiplexed Protocol stores a hash of seqid to service names
+          //  in seqId2Service. If the SeqId is found in the hash we need to
+          //  lookup the appropriate client for this call.
+          //  The connection.client object is a single client object when not
+          //  multiplexing, when using multiplexing it is a service name keyed
+          //  hash of client objects.
+          //NOTE: The 2 way interdependencies between protocols, transports,
+          //  connections and clients in the Node.js implementation are irregular
+          //  and make the implementation difficult to extend and maintain. We
+          //  should bring this stuff inline with typical thrift I/O stack
+          //  operation soon.
+          //  --ra
+          var service_name = self.seqId2Service[header.rseqid];
           if (service_name) {
-            delete self.seqId2Service[header.rseqid];
+            client = self.client[service_name];
           }
-          if (callback) {
-            callback(err, success);
-          }
-        };
-        /*jshint +W083 */
+          /*jshint -W083 */
+          client._reqs[dummy_seqid] = function (err, success) {
+            transport_with_data.commitPosition();
 
-        if(client['recv_' + header.fname]) {
-          client['recv_' + header.fname](message, header.mtype, dummy_seqid);
+            var callback = client._reqs[header.rseqid];
+            delete client._reqs[header.rseqid];
+            if (service_name) {
+              delete self.seqId2Service[header.rseqid];
+            }
+            if (callback) {
+              callback(err, success);
+            }
+          };
+          /*jshint +W083 */
+
+          if (client["recv_" + header.fname]) {
+            client["recv_" + header.fname](message, header.mtype, dummy_seqid);
+          } else {
+            delete client._reqs[dummy_seqid];
+            self.emit(
+              "error",
+              new thrift.TApplicationException(
+                thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
+                "Received a response to an unknown RPC function",
+              ),
+            );
+          }
+        }
+      } catch (e) {
+        if (e instanceof InputBufferUnderrunError) {
+          transport_with_data.rollbackPosition();
         } else {
-          delete client._reqs[dummy_seqid];
-          self.emit("error",
-                    new thrift.TApplicationException(thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
-                             "Received a response to an unknown RPC function"));
+          self.emit("error", e);
         }
       }
-    }
-    catch (e) {
-      if (e instanceof InputBufferUnderrunError) {
-        transport_with_data.rollbackPosition();
-      }
-      else {
-        self.emit('error', e);
-      }
-    }
-  }));
-};
+    }),
+  );
+});
 util.inherits(Connection, EventEmitter);
 
-Connection.prototype.end = function() {
+Connection.prototype.end = function () {
   this.forceClose = true;
   this.connection.end();
 };
 
-Connection.prototype.destroy = function() {
+Connection.prototype.destroy = function () {
   this.connection.destroy();
 };
 
@@ -183,12 +199,12 @@
   // Reset offline queue
   this.offline_queue = [];
   // Attempt to write queued items
-  offline_queue.forEach(function(data) {
+  offline_queue.forEach(function (data) {
     self.write(data);
   });
 };
 
-Connection.prototype.write = function(data) {
+Connection.prototype.write = function (data) {
   if (!this.connected) {
     this.offline_queue.push(data);
     return;
@@ -201,7 +217,7 @@
   this.connected = false;
 
   // If closed by manual, emit close event and cancel reconnect process
-  if(this.forceClose) {
+  if (this.forceClose) {
     if (this.retry_timer) {
       clearTimeout(this.retry_timer);
       this.retry_timer = null;
@@ -220,7 +236,10 @@
     return;
   }
 
-  if (this.retry_max_delay !== null && this.retry_delay >= this.retry_max_delay) {
+  if (
+    this.retry_max_delay !== null &&
+    this.retry_delay >= this.retry_max_delay
+  ) {
     this.retry_delay = this.retry_max_delay;
   } else {
     this.retry_delay = Math.floor(this.retry_delay * this.retry_backoff);
@@ -230,7 +249,11 @@
 
   if (this.max_attempts && this.attempts >= this.max_attempts) {
     this.retry_timer = null;
-    console.error("thrift: Couldn't get thrift connection after " + this.max_attempts + " attempts.");
+    console.error(
+      "thrift: Couldn't get thrift connection after " +
+        this.max_attempts +
+        " attempts.",
+    );
     self.emit("close");
     return;
   }
@@ -238,7 +261,7 @@
   this.attempts += 1;
   this.emit("reconnecting", {
     delay: self.retry_delay,
-    attempt: self.attempts
+    attempt: self.attempts,
   });
 
   this.retry_timer = setTimeout(function () {
@@ -247,10 +270,14 @@
     self.retry_totaltime += self.retry_delay;
 
     if (self.connect_timeout && self.retry_totaltime >= self.connect_timeout) {
-       self.retry_timer = null;
-       console.error("thrift: Couldn't get thrift connection after " + self.retry_totaltime + "ms.");
-       self.emit("close");
-       return;
+      self.retry_timer = null;
+      console.error(
+        "thrift: Couldn't get thrift connection after " +
+          self.retry_totaltime +
+          "ms.",
+      );
+      self.emit("close");
+      return;
     }
 
     if (self.path !== undefined) {
@@ -262,11 +289,11 @@
   }, this.retry_delay);
 };
 
-exports.createConnection = function(host, port, options) {
-  var stream = net.createConnection( {
+exports.createConnection = function (host, port, options) {
+  var stream = net.createConnection({
     port: port,
     host: host,
-    timeout: options.connect_timeout || options.timeout || 0
+    timeout: options.connect_timeout || options.timeout || 0,
   });
   var connection = new Connection(stream, options);
   connection.host = host;
@@ -275,7 +302,7 @@
   return connection;
 };
 
-exports.createUDSConnection = function(path, options) {
+exports.createUDSConnection = function (path, options) {
   var stream = net.createConnection(path);
   var connection = new Connection(stream, options);
   connection.path = path;
@@ -283,10 +310,11 @@
   return connection;
 };
 
-exports.createSSLConnection = function(host, port, options) {
-  if (!('secureProtocol' in options) && !('secureOptions' in options)) {
+exports.createSSLConnection = function (host, port, options) {
+  if (!("secureProtocol" in options) && !("secureOptions" in options)) {
     options.secureProtocol = "SSLv23_method";
-    options.secureOptions = constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3;
+    options.secureOptions =
+      constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3;
   }
 
   var stream = tls.connect(port, host, options);
@@ -297,15 +325,14 @@
   return connection;
 };
 
-
 exports.createClient = createClient;
 
-var child_process = require('child_process');
-var StdIOConnection = exports.StdIOConnection = function(command, options) {
-  var command_parts = command.split(' ');
+var child_process = require("child_process");
+var StdIOConnection = (exports.StdIOConnection = function (command, options) {
+  var command_parts = command.split(" ");
   command = command_parts[0];
-  var args = command_parts.splice(1,command_parts.length -1);
-  var child = this.child = child_process.spawn(command,args);
+  var args = command_parts.splice(1, command_parts.length - 1);
+  var child = (this.child = child_process.spawn(command, args));
 
   var self = this;
   EventEmitter.call(this);
@@ -316,13 +343,13 @@
   this.protocol = this.options.protocol || TBinaryProtocol;
   this.offline_queue = [];
 
-  if (log.getLogLevel() === 'debug') {
-    this.child.stderr.on('data', function (err) {
-      log.debug(err.toString(), 'CHILD ERROR');
+  if (log.getLogLevel() === "debug") {
+    this.child.stderr.on("data", function (err) {
+      log.debug(err.toString(), "CHILD ERROR");
     });
 
-    this.child.on('exit', function (code,signal) {
-      log.debug(code + ':' + signal, 'CHILD EXITED');
+    this.child.on("exit", function (code, signal) {
+      log.debug(code + ":" + signal, "CHILD EXITED");
     });
   }
 
@@ -333,46 +360,47 @@
 
   self.flush_offline_queue();
 
-  this.connection.addListener("error", function(err) {
+  this.connection.addListener("error", function (err) {
     self.emit("error", err);
   });
 
   // Add a close listener
-  this.connection.addListener("close", function() {
+  this.connection.addListener("close", function () {
     self.emit("close");
   });
 
-  child.stdout.addListener("data", self.transport.receiver(function(transport_with_data) {
-    var message = new self.protocol(transport_with_data);
-    try {
-      var header = message.readMessageBegin();
-      var dummy_seqid = header.rseqid * -1;
-      var client = self.client;
-      client._reqs[dummy_seqid] = function(err, success){
-        transport_with_data.commitPosition();
+  child.stdout.addListener(
+    "data",
+    self.transport.receiver(function (transport_with_data) {
+      var message = new self.protocol(transport_with_data);
+      try {
+        var header = message.readMessageBegin();
+        var dummy_seqid = header.rseqid * -1;
+        var client = self.client;
+        client._reqs[dummy_seqid] = function (err, success) {
+          transport_with_data.commitPosition();
 
-        var callback = client._reqs[header.rseqid];
-        delete client._reqs[header.rseqid];
-        if (callback) {
-          callback(err, success);
+          var callback = client._reqs[header.rseqid];
+          delete client._reqs[header.rseqid];
+          if (callback) {
+            callback(err, success);
+          }
+        };
+        client["recv_" + header.fname](message, header.mtype, dummy_seqid);
+      } catch (e) {
+        if (e instanceof InputBufferUnderrunError) {
+          transport_with_data.rollbackPosition();
+        } else {
+          throw e;
         }
-      };
-      client['recv_' + header.fname](message, header.mtype, dummy_seqid);
-    }
-    catch (e) {
-      if (e instanceof InputBufferUnderrunError) {
-        transport_with_data.rollbackPosition();
       }
-      else {
-        throw e;
-      }
-    }
-  }));
-};
+    }),
+  );
+});
 
 util.inherits(StdIOConnection, EventEmitter);
 
-StdIOConnection.prototype.end = function() {
+StdIOConnection.prototype.end = function () {
   this.connection.end();
 };
 
@@ -383,12 +411,12 @@
   // Reset offline queue
   this.offline_queue = [];
   // Attempt to write queued items
-  offline_queue.forEach(function(data) {
+  offline_queue.forEach(function (data) {
     self.write(data);
   });
 };
 
-StdIOConnection.prototype.write = function(data) {
+StdIOConnection.prototype.write = function (data) {
   if (!this.connected) {
     this.offline_queue.push(data);
     return;
@@ -396,8 +424,8 @@
   this.connection.write(data);
 };
 
-exports.createStdIOConnection = function(command,options){
-  return new StdIOConnection(command,options);
+exports.createStdIOConnection = function (command, options) {
+  return new StdIOConnection(command, options);
 };
 
 exports.createStdIOClient = createClient;
diff --git a/lib/nodejs/lib/thrift/create_client.js b/lib/nodejs/lib/thrift/create_client.js
index d6b77a8..b9021bd 100644
--- a/lib/nodejs/lib/thrift/create_client.js
+++ b/lib/nodejs/lib/thrift/create_client.js
@@ -43,7 +43,7 @@
   //   - Callback to call on flush
 
   // Wrap the write method
-  var writeCb = function(buf, seqid) {
+  var writeCb = function (buf, seqid) {
     connection.write(buf, seqid);
   };
   var transport = new connection.transport(undefined, writeCb);
@@ -51,4 +51,4 @@
   transport.client = client;
   connection.client = client;
   return client;
-};
+}
diff --git a/lib/nodejs/lib/thrift/framed_transport.js b/lib/nodejs/lib/thrift/framed_transport.js
index 058d230..7ede222 100644
--- a/lib/nodejs/lib/thrift/framed_transport.js
+++ b/lib/nodejs/lib/thrift/framed_transport.js
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-var binary = require('./binary');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
-var THeaderTransport = require('./header_transport');
+var binary = require("./binary");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
+var THeaderTransport = require("./header_transport");
 
 module.exports = TFramedTransport;
 
@@ -30,14 +30,14 @@
   this.outCount = 0;
   this.readPos = 0;
   this.onFlush = callback;
-};
+}
 
 Object.setPrototypeOf(TFramedTransport.prototype, THeaderTransport.prototype);
 
-TFramedTransport.receiver = function(callback, seqid) {
+TFramedTransport.receiver = function (callback, seqid) {
   var residual = new Buffer(0);
 
-  return function(data) {
+  return function (data) {
     residual = Buffer.concat([residual, Buffer.from(data)]);
 
     while (residual.length > 0) {
@@ -61,34 +61,34 @@
   };
 };
 
-TFramedTransport.prototype.commitPosition = function(){},
-TFramedTransport.prototype.rollbackPosition = function(){},
-
+(TFramedTransport.prototype.commitPosition = function () {}),
+  (TFramedTransport.prototype.rollbackPosition = function () {}),
   // TODO: Implement open/close support
-TFramedTransport.prototype.isOpen = function() {
-  return true;
-};
-TFramedTransport.prototype.open = function() {};
-TFramedTransport.prototype.close =  function() {};
+  (TFramedTransport.prototype.isOpen = function () {
+    return true;
+  });
+TFramedTransport.prototype.open = function () {};
+TFramedTransport.prototype.close = function () {};
 
-  // Set the seqid of the message in the client
-  // So that callbacks can be found
-TFramedTransport.prototype.setCurrSeqId = function(seqid) {
+// Set the seqid of the message in the client
+// So that callbacks can be found
+TFramedTransport.prototype.setCurrSeqId = function (seqid) {
   this._seqid = seqid;
 };
 
-TFramedTransport.prototype.ensureAvailable = function(len) {
+TFramedTransport.prototype.ensureAvailable = function (len) {
   if (this.readPos + len > this.inBuf.length) {
     throw new InputBufferUnderrunError();
   }
 };
 
-TFramedTransport.prototype.read = function(len) { // this function will be used for each frames.
+TFramedTransport.prototype.read = function (len) {
+  // this function will be used for each frames.
   this.ensureAvailable(len);
   var end = this.readPos + len;
 
   if (this.inBuf.length < end) {
-    throw new Error('read(' + len + ') failed - not enough data');
+    throw new Error("read(" + len + ") failed - not enough data");
   }
 
   var buf = this.inBuf.slice(this.readPos, end);
@@ -96,68 +96,68 @@
   return buf;
 };
 
-TFramedTransport.prototype.readByte = function() {
+TFramedTransport.prototype.readByte = function () {
   this.ensureAvailable(1);
   return binary.readByte(this.inBuf[this.readPos++]);
 };
 
-TFramedTransport.prototype.readI16 = function() {
+TFramedTransport.prototype.readI16 = function () {
   this.ensureAvailable(2);
   var i16 = binary.readI16(this.inBuf, this.readPos);
   this.readPos += 2;
   return i16;
 };
 
-TFramedTransport.prototype.readI32 = function() {
+TFramedTransport.prototype.readI32 = function () {
   this.ensureAvailable(4);
   var i32 = binary.readI32(this.inBuf, this.readPos);
   this.readPos += 4;
   return i32;
 };
 
-TFramedTransport.prototype.readDouble = function() {
+TFramedTransport.prototype.readDouble = function () {
   this.ensureAvailable(8);
   var d = binary.readDouble(this.inBuf, this.readPos);
   this.readPos += 8;
   return d;
 };
 
-TFramedTransport.prototype.readString = function(len) {
+TFramedTransport.prototype.readString = function (len) {
   this.ensureAvailable(len);
-  var str = this.inBuf.toString('utf8', this.readPos, this.readPos + len);
+  var str = this.inBuf.toString("utf8", this.readPos, this.readPos + len);
   this.readPos += len;
   return str;
 };
 
-TFramedTransport.prototype.borrow = function() {
+TFramedTransport.prototype.borrow = function () {
   return {
     buf: this.inBuf,
     readIndex: this.readPos,
-    writeIndex: this.inBuf.length
+    writeIndex: this.inBuf.length,
   };
 };
 
-TFramedTransport.prototype.consume = function(bytesConsumed) {
+TFramedTransport.prototype.consume = function (bytesConsumed) {
   this.readPos += bytesConsumed;
 };
 
-TFramedTransport.prototype.write = function(buf, encoding) {
-  if (typeof(buf) === "string") {
-    buf = new Buffer(buf, encoding || 'utf8');
+TFramedTransport.prototype.write = function (buf, encoding) {
+  if (typeof buf === "string") {
+    buf = new Buffer(buf, encoding || "utf8");
   }
   this.outBuffers.push(buf);
   this.outCount += buf.length;
 };
 
-TFramedTransport.prototype.flush = function() {
+TFramedTransport.prototype.flush = function () {
   // If the seqid of the callback is available pass it to the onFlush
   // Then remove the current seqid
   var seqid = this._seqid;
   this._seqid = null;
 
   var out = new Buffer(this.outCount),
-      pos = 0;
-  this.outBuffers.forEach(function(buf) {
+    pos = 0;
+  this.outBuffers.forEach(function (buf) {
     buf.copy(out, pos, 0);
     pos += buf.length;
   });
diff --git a/lib/nodejs/lib/thrift/header_protocol.js b/lib/nodejs/lib/thrift/header_protocol.js
index 8971751..2a48a4d 100644
--- a/lib/nodejs/lib/thrift/header_protocol.js
+++ b/lib/nodejs/lib/thrift/header_protocol.js
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
-var TBinaryProtocol = require('./binary_protocol');
-var TCompactProtocol = require('./compact_protocol');
-var THeaderTransport = require('./header_transport');
+var util = require("util");
+var TBinaryProtocol = require("./binary_protocol");
+var TCompactProtocol = require("./compact_protocol");
+var THeaderTransport = require("./header_transport");
 
 var ProtocolMap = {};
 ProtocolMap[THeaderTransport.SubprotocolId.BINARY] = TBinaryProtocol;
@@ -54,204 +54,206 @@
 function THeaderProtocol(trans) {
   if (!(trans instanceof THeaderTransport)) {
     throw new THeaderProtocolError(
-      'Only transports that inherit THeaderTransport can be' +
-      ' used with THeaderProtocol'
+      "Only transports that inherit THeaderTransport can be" +
+        " used with THeaderProtocol",
     );
   }
   this.trans = trans;
   this.setProtocol();
-};
+}
 
-THeaderProtocol.prototype.flush = function() {
-   // Headers must be written prior to flushing because because
-   // you need to calculate the length of the payload for the length
-   // field of the header
+THeaderProtocol.prototype.flush = function () {
+  // Headers must be written prior to flushing because because
+  // you need to calculate the length of the payload for the length
+  // field of the header
   this.trans.writeHeaders();
   return this.trans.flush();
 };
 
-THeaderProtocol.prototype.writeMessageBegin = function(name, type, seqid) {
+THeaderProtocol.prototype.writeMessageBegin = function (name, type, seqid) {
   return this.protocol.writeMessageBegin(name, type, seqid);
 };
 
-THeaderProtocol.prototype.writeMessageEnd = function() {
+THeaderProtocol.prototype.writeMessageEnd = function () {
   return this.protocol.writeMessageEnd();
 };
 
-THeaderProtocol.prototype.writeStructBegin = function(name) {
+THeaderProtocol.prototype.writeStructBegin = function (name) {
   return this.protocol.writeStructBegin(name);
 };
 
-THeaderProtocol.prototype.writeStructEnd = function() {
+THeaderProtocol.prototype.writeStructEnd = function () {
   return this.protocol.writeStructEnd();
 };
 
-THeaderProtocol.prototype.writeFieldBegin = function(name, type, id) {
+THeaderProtocol.prototype.writeFieldBegin = function (name, type, id) {
   return this.protocol.writeFieldBegin(name, type, id);
-}
+};
 
-THeaderProtocol.prototype.writeFieldEnd = function() {
+THeaderProtocol.prototype.writeFieldEnd = function () {
   return this.protocol.writeFieldEnd();
 };
 
-THeaderProtocol.prototype.writeFieldStop = function() {
+THeaderProtocol.prototype.writeFieldStop = function () {
   return this.protocol.writeFieldStop();
 };
 
-THeaderProtocol.prototype.writeMapBegin = function(ktype, vtype, size) {
+THeaderProtocol.prototype.writeMapBegin = function (ktype, vtype, size) {
   return this.protocol.writeMapBegin(ktype, vtype, size);
 };
 
-THeaderProtocol.prototype.writeMapEnd = function() {
+THeaderProtocol.prototype.writeMapEnd = function () {
   return this.protocol.writeMapEnd();
 };
 
-THeaderProtocol.prototype.writeListBegin = function(etype, size) {
+THeaderProtocol.prototype.writeListBegin = function (etype, size) {
   return this.protocol.writeListBegin(etype, size);
 };
 
-THeaderProtocol.prototype.writeListEnd = function() {
+THeaderProtocol.prototype.writeListEnd = function () {
   return this.protocol.writeListEnd();
 };
 
-THeaderProtocol.prototype.writeSetBegin = function(etype, size) {
+THeaderProtocol.prototype.writeSetBegin = function (etype, size) {
   return this.protocol.writeSetBegin(etype, size);
 };
 
-THeaderProtocol.prototype.writeSetEnd = function() {
+THeaderProtocol.prototype.writeSetEnd = function () {
   return this.protocol.writeSetEnd();
 };
 
-THeaderProtocol.prototype.writeBool = function(b) {
+THeaderProtocol.prototype.writeBool = function (b) {
   return this.protocol.writeBool(b);
 };
 
-THeaderProtocol.prototype.writeByte = function(b) {
+THeaderProtocol.prototype.writeByte = function (b) {
   return this.protocol.writeByte(b);
 };
 
-THeaderProtocol.prototype.writeI16 = function(i16) {
+THeaderProtocol.prototype.writeI16 = function (i16) {
   return this.protocol.writeI16(i16);
 };
 
-THeaderProtocol.prototype.writeI32 = function(i32) {
+THeaderProtocol.prototype.writeI32 = function (i32) {
   return this.protocol.writeI32(i32);
 };
 
-THeaderProtocol.prototype.writeI64 = function(i64) {
+THeaderProtocol.prototype.writeI64 = function (i64) {
   return this.protocol.writeI64(i64);
 };
 
-THeaderProtocol.prototype.writeDouble = function(dub) {
+THeaderProtocol.prototype.writeDouble = function (dub) {
   return this.protocol.writeDouble(dub);
 };
 
-THeaderProtocol.prototype.writeStringOrBinary = function(name, encoding, arg) {
+THeaderProtocol.prototype.writeStringOrBinary = function (name, encoding, arg) {
   return this.protocol.writeStringOrBinary(name, encoding, arg);
 };
 
-THeaderProtocol.prototype.writeString = function(arg) {
+THeaderProtocol.prototype.writeString = function (arg) {
   return this.protocol.writeString(arg);
 };
 
-THeaderProtocol.prototype.writeBinary = function(arg) {
+THeaderProtocol.prototype.writeBinary = function (arg) {
   return this.protocol.writeBinary(arg);
 };
 
-THeaderProtocol.prototype.readMessageBegin = function() {
+THeaderProtocol.prototype.readMessageBegin = function () {
   this.trans.readHeaders();
   this.setProtocol();
   return this.protocol.readMessageBegin();
 };
 
-THeaderProtocol.prototype.readMessageEnd = function() {
+THeaderProtocol.prototype.readMessageEnd = function () {
   return this.protocol.readMessageEnd();
 };
 
-THeaderProtocol.prototype.readStructBegin = function() {
+THeaderProtocol.prototype.readStructBegin = function () {
   return this.protocol.readStructBegin();
 };
 
-THeaderProtocol.prototype.readStructEnd = function() {
+THeaderProtocol.prototype.readStructEnd = function () {
   return this.protocol.readStructEnd();
 };
 
-THeaderProtocol.prototype.readFieldBegin = function() {
+THeaderProtocol.prototype.readFieldBegin = function () {
   return this.protocol.readFieldBegin();
 };
 
-THeaderProtocol.prototype.readFieldEnd = function() {
+THeaderProtocol.prototype.readFieldEnd = function () {
   return this.protocol.readFieldEnd();
 };
 
-THeaderProtocol.prototype.readMapBegin = function() {
+THeaderProtocol.prototype.readMapBegin = function () {
   return this.protocol.readMapBegin();
 };
 
-THeaderProtocol.prototype.readMapEnd = function() {
+THeaderProtocol.prototype.readMapEnd = function () {
   return this.protocol.readMapEnd();
 };
 
-THeaderProtocol.prototype.readListBegin = function() {
+THeaderProtocol.prototype.readListBegin = function () {
   return this.protocol.readListBegin();
 };
 
-THeaderProtocol.prototype.readListEnd = function() {
+THeaderProtocol.prototype.readListEnd = function () {
   return this.protocol.readListEnd();
 };
 
-THeaderProtocol.prototype.readSetBegin = function() {
+THeaderProtocol.prototype.readSetBegin = function () {
   return this.protocol.readSetBegin();
 };
 
-THeaderProtocol.prototype.readSetEnd = function() {
+THeaderProtocol.prototype.readSetEnd = function () {
   return this.protocol.readSetEnd();
 };
 
-THeaderProtocol.prototype.readBool = function() {
+THeaderProtocol.prototype.readBool = function () {
   return this.protocol.readBool();
 };
 
-THeaderProtocol.prototype.readByte = function() {
+THeaderProtocol.prototype.readByte = function () {
   return this.protocol.readByte();
 };
 
-THeaderProtocol.prototype.readI16 = function() {
+THeaderProtocol.prototype.readI16 = function () {
   return this.protocol.readI16();
 };
 
-THeaderProtocol.prototype.readI32 = function() {
+THeaderProtocol.prototype.readI32 = function () {
   return this.protocol.readI32();
 };
 
-THeaderProtocol.prototype.readI64 = function() {
+THeaderProtocol.prototype.readI64 = function () {
   return this.protocol.readI64();
 };
 
-THeaderProtocol.prototype.readDouble = function() {
+THeaderProtocol.prototype.readDouble = function () {
   return this.protocol.readDouble();
 };
 
-THeaderProtocol.prototype.readBinary = function() {
+THeaderProtocol.prototype.readBinary = function () {
   return this.protocol.readBinary();
 };
 
-THeaderProtocol.prototype.readString = function() {
+THeaderProtocol.prototype.readString = function () {
   return this.protocol.readString();
 };
 
-THeaderProtocol.prototype.getTransport = function() {
+THeaderProtocol.prototype.getTransport = function () {
   return this.trans;
 };
 
-THeaderProtocol.prototype.skip = function(type) {
+THeaderProtocol.prototype.skip = function (type) {
   return this.protocol.skip(type);
 };
 
-THeaderProtocol.prototype.setProtocol = function(subProtocolId) {
+THeaderProtocol.prototype.setProtocol = function (subProtocolId) {
   var subProtocolId = this.trans.getProtocolId();
   if (!ProtocolMap[subProtocolId]) {
-    throw new THeaderProtocolError('Headers not supported for protocol ' + subProtocolId);
+    throw new THeaderProtocolError(
+      "Headers not supported for protocol " + subProtocolId,
+    );
   }
 
   this.protocol = new ProtocolMap[subProtocolId](this.trans);
diff --git a/lib/nodejs/lib/thrift/header_transport.js b/lib/nodejs/lib/thrift/header_transport.js
index ec8624b..37da492 100644
--- a/lib/nodejs/lib/thrift/header_transport.js
+++ b/lib/nodejs/lib/thrift/header_transport.js
@@ -17,10 +17,10 @@
  * under the License.
  */
 
-var util = require('util');
-var TCompactProtocol = require('./compact_protocol');
-var TBinaryProtocol = require('./binary_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var util = require("util");
+var TCompactProtocol = require("./compact_protocol");
+var TBinaryProtocol = require("./binary_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
 function THeaderTransportError(message) {
   Error.call(this);
@@ -45,51 +45,51 @@
 var HEADER_SIZE_OFFSET = 96 / 8;
 var HEADER_START_OFFSET = 112 / 8;
 
-var HEADER_MAGIC = 0x0FFF;
+var HEADER_MAGIC = 0x0fff;
 
 var TINFO_HEADER_KEY_VALUE_TYPE = 0x01;
-var MAX_FRAME_SIZE = 0x3FFFFFFF;
+var MAX_FRAME_SIZE = 0x3fffffff;
 
- // A helper class for reading/writing varints. Uses
- // TCompactProtocol under the hood
+// A helper class for reading/writing varints. Uses
+// TCompactProtocol under the hood
 function VarintHelper(readBuffer) {
-  var TBufferedTransport = require('./buffered_transport');
+  var TBufferedTransport = require("./buffered_transport");
   this.outputBuffer = null;
   var _this = this;
-  this.transport = new TBufferedTransport(null, function(output) {
+  this.transport = new TBufferedTransport(null, function (output) {
     _this.outputBuffer = output;
   });
 
   this.transport.inBuf = readBuffer || Buffer.alloc(0);
   this.transport.writeCursor = this.transport.inBuf.length;
   this.protocol = new TCompactProtocol(this.transport);
-};
+}
 
-VarintHelper.prototype.readVarint32 = function() {
+VarintHelper.prototype.readVarint32 = function () {
   return this.protocol.readVarint32();
 };
 
-VarintHelper.prototype.writeVarint32 = function(i) {
+VarintHelper.prototype.writeVarint32 = function (i) {
   this.protocol.writeVarint32(i);
 };
 
-VarintHelper.prototype.readString = function() {
+VarintHelper.prototype.readString = function () {
   return this.protocol.readString();
 };
 
-VarintHelper.prototype.writeString = function(str) {
+VarintHelper.prototype.writeString = function (str) {
   this.protocol.writeString(str);
-}
+};
 
-VarintHelper.prototype.getOutCount = function() {
+VarintHelper.prototype.getOutCount = function () {
   return this.transport.outCount;
 };
 
-VarintHelper.prototype.write = function(str) {
+VarintHelper.prototype.write = function (str) {
   this.transport.write(str);
 };
 
-VarintHelper.prototype.toBuffer = function() {
+VarintHelper.prototype.toBuffer = function () {
   this.transport.flush();
   return this.outputBuffer;
 };
@@ -127,87 +127,90 @@
   this.flags = null;
   this.seqid = 0;
   this.shouldWriteHeaders = true;
-};
+}
 
-var validateHeaders = function(key, value) {
-  if (typeof key !== 'string' || typeof value !== 'string') {
-    throw new THeaderTransportError('Header key and values must be strings');
+var validateHeaders = function (key, value) {
+  if (typeof key !== "string" || typeof value !== "string") {
+    throw new THeaderTransportError("Header key and values must be strings");
   }
 };
 
-var validateProtocolId = function(protocolId) {
+var validateProtocolId = function (protocolId) {
   var protocols = Object.keys(THeaderTransport.SubprotocolId);
   for (var i = 0; i < protocols.length; i++) {
-    if (protocolId === THeaderTransport.SubprotocolId[protocols[i]]) return true;
+    if (protocolId === THeaderTransport.SubprotocolId[protocols[i]])
+      return true;
   }
 
-  throw new Error(protocolId + ' is not a valid protocol id');
+  throw new Error(protocolId + " is not a valid protocol id");
 };
 
-THeaderTransport.prototype.setSeqId = function(seqid) {
+THeaderTransport.prototype.setSeqId = function (seqid) {
   this.seqid = seqid;
 };
 
-THeaderTransport.prototype.getSeqId = function(seqid) {
+THeaderTransport.prototype.getSeqId = function (seqid) {
   return this.seqid;
 };
 
-THeaderTransport.prototype.setFlags = function(flags) {
+THeaderTransport.prototype.setFlags = function (flags) {
   this.flags = flags;
 };
 
-THeaderTransport.prototype.getReadHeaders = function() {
+THeaderTransport.prototype.getReadHeaders = function () {
   return this.rheaders;
 };
 
-THeaderTransport.prototype.setReadHeader = function(key, value) {
+THeaderTransport.prototype.setReadHeader = function (key, value) {
   validateHeaders(key, value);
   this.rheaders[key] = value;
 };
 
-THeaderTransport.prototype.clearReadHeaders = function() {
+THeaderTransport.prototype.clearReadHeaders = function () {
   this.rheaders = {};
 };
 
-THeaderTransport.prototype.getWriteHeaders = function() {
+THeaderTransport.prototype.getWriteHeaders = function () {
   return this.wheaders;
 };
 
-THeaderTransport.prototype.setWriteHeader = function(key, value) {
+THeaderTransport.prototype.setWriteHeader = function (key, value) {
   validateHeaders(key, value);
   this.wheaders[key] = value;
 };
 
-THeaderTransport.prototype.clearWriteHeaders = function() {
+THeaderTransport.prototype.clearWriteHeaders = function () {
   this.wheaders = {};
 };
 
-THeaderTransport.prototype.setMaxFrameSize = function(frameSize) {
+THeaderTransport.prototype.setMaxFrameSize = function (frameSize) {
   this.maxFrameSize = frameSize;
 };
 
-THeaderTransport.prototype.setProtocolId = function(protocolId) {
+THeaderTransport.prototype.setProtocolId = function (protocolId) {
   validateProtocolId(protocolId);
   this.protocolId = protocolId;
 };
 
-THeaderTransport.prototype.getProtocolId = function() {
+THeaderTransport.prototype.getProtocolId = function () {
   return this.protocolId;
 };
 
-var isUnframedBinary = function(readBuffer) {
+var isUnframedBinary = function (readBuffer) {
   var version = readBuffer.readInt32BE();
   return (version & TBinaryProtocol.VERSION_MASK) === TBinaryProtocol.VERSION_1;
-}
+};
 
-var isUnframedCompact = function(readBuffer) {
+var isUnframedCompact = function (readBuffer) {
   var protocolId = readBuffer.readInt8(COMPACT_PROTOCOL_OFFSET);
   var version = readBuffer.readInt8(COMPACT_PROTOCOL_VERSION_OFFSET);
-  return protocolId === TCompactProtocol.PROTOCOL_ID &&
-    (version & TCompactProtocol.VERSION_MASK) === TCompactProtocol.VERSION_N;
-}
+  return (
+    protocolId === TCompactProtocol.PROTOCOL_ID &&
+    (version & TCompactProtocol.VERSION_MASK) === TCompactProtocol.VERSION_N
+  );
+};
 
-THeaderTransport.prototype.readHeaders = function() {
+THeaderTransport.prototype.readHeaders = function () {
   var readBuffer = this.inBuf;
 
   var isUnframed = false;
@@ -228,7 +231,7 @@
 
   var frameSize = readBuffer.readInt32BE(FRAME_SIZE_OFFSET);
   if (frameSize > this.maxFrameSize) {
-    throw new THeaderTransportError('Frame exceeds maximum frame size');
+    throw new THeaderTransportError("Frame exceeds maximum frame size");
   }
 
   var headerMagic = readBuffer.readInt16BE(HEADER_MAGIC_OFFSET);
@@ -242,7 +245,7 @@
   var headerSize = readBuffer.readInt16BE(HEADER_SIZE_OFFSET) * 4;
   var endOfHeaders = HEADER_START_OFFSET + headerSize;
   if (endOfHeaders > readBuffer.length) {
-    throw new THeaderTransportError('Header size is greater than frame size');
+    throw new THeaderTransportError("Header size is greater than frame size");
   }
 
   var headerBuffer = Buffer.alloc(headerSize);
@@ -252,7 +255,7 @@
   this.setProtocolId(varintHelper.readVarint32());
   var transformCount = varintHelper.readVarint32();
   if (transformCount > 0) {
-    throw new THeaderTransportError('Transforms are not yet supported');
+    throw new THeaderTransportError("Transforms are not yet supported");
   }
 
   while (true) {
@@ -281,7 +284,7 @@
   return this.getReadHeaders();
 };
 
-THeaderTransport.prototype.writeHeaders = function() {
+THeaderTransport.prototype.writeHeaders = function () {
   // only write headers on the server if the client contained headers
   if (!this.shouldWriteHeaders) {
     return;
@@ -305,11 +308,13 @@
       varintWriter.writeString(value);
     }
   }
- var headerSizeWithoutPadding = varintWriter.getOutCount();
+  var headerSizeWithoutPadding = varintWriter.getOutCount();
   var paddingNeeded = (4 - (headerSizeWithoutPadding % 4)) % 4;
 
   var headerSize = Buffer.alloc(2);
-  headerSize.writeInt16BE(Math.floor((headerSizeWithoutPadding + paddingNeeded) / 4));
+  headerSize.writeInt16BE(
+    Math.floor((headerSizeWithoutPadding + paddingNeeded) / 4),
+  );
 
   var paddingBuffer = Buffer.alloc(paddingNeeded);
   paddingBuffer.fill(0x00);
diff --git a/lib/nodejs/lib/thrift/http_connection.js b/lib/nodejs/lib/thrift/http_connection.js
index 17e0d0c..50d3312 100644
--- a/lib/nodejs/lib/thrift/http_connection.js
+++ b/lib/nodejs/lib/thrift/http_connection.js
@@ -16,17 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
-var http = require('http');
-var https = require('https');
-var EventEmitter = require('events').EventEmitter;
-var thrift = require('./thrift');
+var util = require("util");
+var http = require("http");
+var https = require("https");
+var EventEmitter = require("events").EventEmitter;
+var thrift = require("./thrift");
 
-var TBufferedTransport = require('./buffered_transport');
-var TBinaryProtocol = require('./binary_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var TBufferedTransport = require("./buffered_transport");
+var TBinaryProtocol = require("./binary_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
-var createClient = require('./create_client');
+var createClient = require("./create_client");
 
 /**
  * @class
@@ -69,7 +69,7 @@
  *     semantics implemented over the Node.js http.request() method.
  * @see {@link createHttpConnection}
  */
-var HttpConnection = exports.HttpConnection = function(options) {
+var HttpConnection = (exports.HttpConnection = function (options) {
   //Initialize the emitter base object
   EventEmitter.call(this);
 
@@ -88,17 +88,17 @@
     host: this.host,
     port: this.port,
     socketPath: this.socketPath,
-    path: this.options.path || '/',
-    method: 'POST',
+    path: this.options.path || "/",
+    method: "POST",
     headers: this.options.headers || {},
-    responseType: this.options.responseType || null
+    responseType: this.options.responseType || null,
   };
   for (var attrname in this.options.nodeOptions) {
     this.nodeOptions[attrname] = this.options.nodeOptions[attrname];
   }
   /*jshint -W069 */
-  if (! this.nodeOptions.headers['Connection']) {
-    this.nodeOptions.headers['Connection'] = 'keep-alive';
+  if (!this.nodeOptions.headers["Connection"]) {
+    this.nodeOptions.headers["Connection"] = "keep-alive";
   }
   /*jshint +W069 */
 
@@ -131,41 +131,42 @@
           delete self.seqId2Service[header.rseqid];
         }
         /*jshint -W083 */
-        client._reqs[dummy_seqid] = function(err, success){
+        client._reqs[dummy_seqid] = function (err, success) {
           transport_with_data.commitPosition();
           var clientCallback = client._reqs[header.rseqid];
           delete client._reqs[header.rseqid];
           if (clientCallback) {
-            process.nextTick(function() {
+            process.nextTick(function () {
               clientCallback(err, success);
             });
           }
         };
         /*jshint +W083 */
-        if(client['recv_' + header.fname]) {
-          client['recv_' + header.fname](proto, header.mtype, dummy_seqid);
+        if (client["recv_" + header.fname]) {
+          client["recv_" + header.fname](proto, header.mtype, dummy_seqid);
         } else {
           delete client._reqs[dummy_seqid];
-          self.emit("error",
-                    new thrift.TApplicationException(
-                       thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
-                       "Received a response to an unknown RPC function"));
+          self.emit(
+            "error",
+            new thrift.TApplicationException(
+              thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
+              "Received a response to an unknown RPC function",
+            ),
+          );
         }
       }
-    }
-    catch (e) {
+    } catch (e) {
       if (e instanceof InputBufferUnderrunError) {
         transport_with_data.rollbackPosition();
       } else {
-        self.emit('error', e);
+        self.emit("error", e);
       }
     }
   }
 
-
   //Response handler
   //////////////////////////////////////////////////
-  this.responseCallback = function(response) {
+  this.responseCallback = function (response) {
     var data = [];
     var dataLen = 0;
 
@@ -173,16 +174,18 @@
       this.emit("error", new THTTPException(response));
     }
 
-    response.on('error', function (e) {
+    response.on("error", function (e) {
       self.emit("error", e);
     });
 
     // When running directly under node, chunk will be a buffer,
     // however, when running in a Browser (e.g. Browserify), chunk
     // will be a string or an ArrayBuffer.
-    response.on('data', function (chunk) {
-      if ((typeof chunk == 'string') ||
-          (Object.prototype.toString.call(chunk) == '[object Uint8Array]')) {
+    response.on("data", function (chunk) {
+      if (
+        typeof chunk == "string" ||
+        Object.prototype.toString.call(chunk) == "[object Uint8Array]"
+      ) {
         // Wrap ArrayBuffer/string in a Buffer so data[i].copy will work
         data.push(new Buffer(chunk));
       } else {
@@ -191,9 +194,9 @@
       dataLen += chunk.length;
     });
 
-    response.on('end', function(){
+    response.on("end", function () {
       var buf = new Buffer(dataLen);
-      for (var i=0, len=data.length, pos=0; i<len; i++) {
+      for (var i = 0, len = data.length, pos = 0; i < len; i++) {
         data[i].copy(buf, pos);
         pos += data[i].length;
       }
@@ -202,7 +205,7 @@
       self.transport.receiver(decodeCallback)(buf);
     });
   };
-};
+});
 util.inherits(HttpConnection, EventEmitter);
 
 /**
@@ -212,16 +215,16 @@
  * @event {error} the "error" event is raised upon request failure passing the
  *     Node.js error object to the listener.
  */
-HttpConnection.prototype.write = function(data) {
+HttpConnection.prototype.write = function (data) {
   var self = this;
   var opts = self.nodeOptions;
   opts.headers["Content-length"] = data.length;
   if (!opts.headers["Content-Type"])
     opts.headers["Content-Type"] = "application/x-thrift";
-  var req = (self.https) ?
-      https.request(opts, self.responseCallback) :
-      http.request(opts, self.responseCallback);
-  req.on('error', function(err) {
+  var req = self.https
+    ? https.request(opts, self.responseCallback)
+    : http.request(opts, self.responseCallback);
+  req.on("error", function (err) {
     self.emit("error", err);
   });
   req.write(data);
@@ -237,19 +240,18 @@
  * @returns {HttpConnection} The connection object.
  * @see {@link ConnectOptions}
  */
-exports.createHttpConnection = function(host, port, options) {
+exports.createHttpConnection = function (host, port, options) {
   options.host = host;
   options.port = port || 80;
   return new HttpConnection(options);
 };
 
-exports.createHttpUDSConnection = function(path, options) {
+exports.createHttpUDSConnection = function (path, options) {
   options.socketPath = path;
   return new HttpConnection(options);
 };
 
-exports.createHttpClient = createClient
-
+exports.createHttpClient = createClient;
 
 function THTTPException(response) {
   thrift.TApplicationException.call(this);
@@ -261,6 +263,7 @@
   this.statusCode = response.statusCode;
   this.response = response;
   this.type = thrift.TApplicationExceptionType.PROTOCOL_ERROR;
-  this.message = "Received a response with a bad HTTP status code: " + response.statusCode;
+  this.message =
+    "Received a response with a bad HTTP status code: " + response.statusCode;
 }
 util.inherits(THTTPException, thrift.TApplicationException);
diff --git a/lib/nodejs/lib/thrift/index.js b/lib/nodejs/lib/thrift/index.js
index df4a5dc..5f0010f 100644
--- a/lib/nodejs/lib/thrift/index.js
+++ b/lib/nodejs/lib/thrift/index.js
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-exports.Thrift = require('./thrift');
+exports.Thrift = require("./thrift");
 
-var log = require('./log');
+var log = require("./log");
 exports.setLogFunc = log.setLogFunc;
 exports.setLogLevel = log.setLogLevel;
 exports.getLogLevel = log.getLogLevel;
 
-var connection = require('./connection');
+var connection = require("./connection");
 exports.Connection = connection.Connection;
 exports.createClient = connection.createClient;
 exports.createConnection = connection.createConnection;
@@ -32,34 +32,34 @@
 exports.createStdIOClient = connection.createStdIOClient;
 exports.createStdIOConnection = connection.createStdIOConnection;
 
-var httpConnection = require('./http_connection');
+var httpConnection = require("./http_connection");
 exports.HttpConnection = httpConnection.HttpConnection;
 exports.createHttpConnection = httpConnection.createHttpConnection;
 exports.createHttpUDSConnection = httpConnection.createHttpUDSConnection;
 exports.createHttpClient = httpConnection.createHttpClient;
 
-var wsConnection = require('./ws_connection');
+var wsConnection = require("./ws_connection");
 exports.WSConnection = wsConnection.WSConnection;
 exports.createWSConnection = wsConnection.createWSConnection;
 exports.createWSClient = wsConnection.createWSClient;
 
-var xhrConnection = require('./xhr_connection');
+var xhrConnection = require("./xhr_connection");
 exports.XHRConnection = xhrConnection.XHRConnection;
 exports.createXHRConnection = xhrConnection.createXHRConnection;
 exports.createXHRClient = xhrConnection.createXHRClient;
 
-var server = require('./server');
+var server = require("./server");
 exports.createServer = server.createServer;
 exports.createMultiplexServer = server.createMultiplexServer;
 
-var web_server = require('./web_server');
+var web_server = require("./web_server");
 exports.createWebServer = web_server.createWebServer;
 
-exports.Int64 = require('node-int64');
-exports.Q = require('q');
+exports.Int64 = require("node-int64");
+exports.Q = require("q");
 
-var mpxProcessor = require('./multiplexed_processor');
-var mpxProtocol = require('./multiplexed_protocol');
+var mpxProcessor = require("./multiplexed_processor");
+var mpxProtocol = require("./multiplexed_protocol");
 exports.MultiplexedProcessor = mpxProcessor.MultiplexedProcessor;
 exports.Multiplexer = mpxProtocol.Multiplexer;
 
@@ -67,12 +67,12 @@
  * Export transport and protocol so they can be used outside of a
  * cassandra/server context
  */
-exports.TBufferedTransport = require('./buffered_transport');
-exports.TFramedTransport = require('./framed_transport');
+exports.TBufferedTransport = require("./buffered_transport");
+exports.TFramedTransport = require("./framed_transport");
 
-exports.TJSONProtocol = require('./json_protocol');
-exports.TBinaryProtocol = require('./binary_protocol');
-exports.TCompactProtocol = require('./compact_protocol');
-exports.THeaderProtocol = require('./header_protocol');
+exports.TJSONProtocol = require("./json_protocol");
+exports.TBinaryProtocol = require("./binary_protocol");
+exports.TCompactProtocol = require("./compact_protocol");
+exports.THeaderProtocol = require("./header_protocol");
 
-exports.InputBufferUnderrunError = require('./input_buffer_underrun_error');
+exports.InputBufferUnderrunError = require("./input_buffer_underrun_error");
diff --git a/lib/nodejs/lib/thrift/input_buffer_underrun_error.js b/lib/nodejs/lib/thrift/input_buffer_underrun_error.js
index e424540..9542854 100644
--- a/lib/nodejs/lib/thrift/input_buffer_underrun_error.js
+++ b/lib/nodejs/lib/thrift/input_buffer_underrun_error.js
@@ -27,6 +27,6 @@
   }
   this.name = this.constructor.name;
   this.message = message;
-};
+}
 
 util.inherits(InputBufferUnderrunError, Error);
diff --git a/lib/nodejs/lib/thrift/int64_util.js b/lib/nodejs/lib/thrift/int64_util.js
index e8d707d..84588c5 100644
--- a/lib/nodejs/lib/thrift/int64_util.js
+++ b/lib/nodejs/lib/thrift/int64_util.js
@@ -17,20 +17,19 @@
  * under the License.
  */
 
-var Int64 = require('node-int64');
+var Int64 = require("node-int64");
 
-var Int64Util = module.exports = {};
+var Int64Util = (module.exports = {});
 
 var POW2_24 = Math.pow(2, 24);
 var POW2_31 = Math.pow(2, 31);
 var POW2_32 = Math.pow(2, 32);
 var POW10_11 = Math.pow(10, 11);
 
-Int64Util.toDecimalString = function(i64) {
+Int64Util.toDecimalString = function (i64) {
   var b = i64.buffer;
   var o = i64.offset;
-  if ((!b[o] && !(b[o + 1] & 0xe0)) ||
-      (!~b[o] && !~(b[o + 1] & 0xe0))) {
+  if ((!b[o] && !(b[o + 1] & 0xe0)) || (!~b[o] && !~(b[o + 1] & 0xe0))) {
     // The magnitude is small enough.
     return i64.toString();
   } else {
@@ -47,34 +46,39 @@
     }
     var high2 = b[o + 1] + (b[o] << 8);
     // Lesser 11 digits with exceeding values but is under 53 bits capacity.
-    var low = b[o + 7] + (b[o + 6] << 8) + (b[o + 5] << 16)
-        + b[o + 4] * POW2_24  // Bit shift renders 32th bit as sign, so use multiplication
-        + (b[o + 3] + (b[o + 2] << 8)) * POW2_32 + high2 * 74976710656;  // The literal is 2^48 % 10^11
+    var low =
+      b[o + 7] +
+      (b[o + 6] << 8) +
+      (b[o + 5] << 16) +
+      b[o + 4] * POW2_24 + // Bit shift renders 32th bit as sign, so use multiplication
+      (b[o + 3] + (b[o + 2] << 8)) * POW2_32 +
+      high2 * 74976710656; // The literal is 2^48 % 10^11
     // 12th digit and greater.
-    var high = Math.floor(low / POW10_11) + high2 * 2814;  // The literal is 2^48 / 10^11
+    var high = Math.floor(low / POW10_11) + high2 * 2814; // The literal is 2^48 / 10^11
     // Make it exactly 11 with leading zeros.
-    low = ('00000000000' + String(low % POW10_11)).slice(-11);
-    return (negative ? '-' : '') + String(high) + low;
+    low = ("00000000000" + String(low % POW10_11)).slice(-11);
+    return (negative ? "-" : "") + String(high) + low;
   }
 };
 
-Int64Util.fromDecimalString = function(text) {
-  var negative = text.charAt(0) === '-';
+Int64Util.fromDecimalString = function (text) {
+  var negative = text.charAt(0) === "-";
   if (text.length < (negative ? 17 : 16)) {
     // The magnitude is smaller than 2^53.
     return new Int64(+text);
   } else if (text.length > (negative ? 20 : 19)) {
-    throw new RangeError('Too many digits for Int64: ' + text);
+    throw new RangeError("Too many digits for Int64: " + text);
   } else {
     // Most significant (up to 5) digits
     var high5 = +text.slice(negative ? 1 : 0, -15);
-    var low = +text.slice(-15) + high5 * 2764472320;  // The literal is 10^15 % 2^32
-    var high = Math.floor(low / POW2_32) + high5 * 232830;  // The literal is 10^15 / 2^&32
+    var low = +text.slice(-15) + high5 * 2764472320; // The literal is 10^15 % 2^32
+    var high = Math.floor(low / POW2_32) + high5 * 232830; // The literal is 10^15 / 2^&32
     low = low % POW2_32;
-    if (high >= POW2_31 &&
-        !(negative && high == POW2_31 && low == 0)  // Allow minimum Int64
-       ) {
-      throw new RangeError('The magnitude is too large for Int64.');
+    if (
+      high >= POW2_31 &&
+      !(negative && high == POW2_31 && low == 0) // Allow minimum Int64
+    ) {
+      throw new RangeError("The magnitude is too large for Int64.");
     }
     if (negative) {
       // 2's complement
diff --git a/lib/nodejs/lib/thrift/json_parse.js b/lib/nodejs/lib/thrift/json_parse.js
index 93b0bf2..3d111c0 100644
--- a/lib/nodejs/lib/thrift/json_parse.js
+++ b/lib/nodejs/lib/thrift/json_parse.js
@@ -12,7 +12,6 @@
  * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
  */
 
-
 /*jslint for */
 
 /*property
@@ -20,280 +19,260 @@
     prototype, push, r, t, text
 */
 
-var Int64 = require('node-int64');
-var Int64Util = require('./int64_util');
+var Int64 = require("node-int64");
+var Int64Util = require("./int64_util");
 
-var json_parse = module.exports = (function () {
-    "use strict";
+var json_parse = (module.exports = (function () {
+  "use strict";
 
-// This is a function that can parse a JSON text, producing a JavaScript
-// data structure. It is a simple, recursive descent parser. It does not use
-// eval or regular expressions, so it can be used as a model for implementing
-// a JSON parser in other languages.
+  // This is a function that can parse a JSON text, producing a JavaScript
+  // data structure. It is a simple, recursive descent parser. It does not use
+  // eval or regular expressions, so it can be used as a model for implementing
+  // a JSON parser in other languages.
 
-// We are defining the function inside of another function to avoid creating
-// global variables.
+  // We are defining the function inside of another function to avoid creating
+  // global variables.
 
-    var at,     // The index of the current character
-        ch,     // The current character
-        escapee = {
-            '"': '"',
-            '\\': '\\',
-            '/': '/',
-            b: '\b',
-            f: '\f',
-            n: '\n',
-            r: '\r',
-            t: '\t'
-        },
-        text,
+  var at, // The index of the current character
+    ch, // The current character
+    escapee = {
+      '"': '"',
+      "\\": "\\",
+      "/": "/",
+      b: "\b",
+      f: "\f",
+      n: "\n",
+      r: "\r",
+      t: "\t",
+    },
+    text,
+    error = function (m) {
+      // Call error when something is wrong.
 
-        error = function (m) {
+      throw new SyntaxError(m);
+    },
+    next = function (c) {
+      // If a c parameter is provided, verify that it matches the current character.
 
-// Call error when something is wrong.
+      if (c && c !== ch) {
+        error("Expected '" + c + "' instead of '" + ch + "'");
+      }
 
-            throw new SyntaxError(m);
-        },
+      // Get the next character. When there are no more characters,
+      // return the empty string.
 
-        next = function (c) {
+      ch = text.charAt(at);
+      at += 1;
+      return ch;
+    },
+    number = function () {
+      // Parse a number value.
 
-// If a c parameter is provided, verify that it matches the current character.
+      var number,
+        string = "";
 
-            if (c && c !== ch) {
-                error("Expected '" + c + "' instead of '" + ch + "'");
-            }
+      if (ch === "-") {
+        string = "-";
+        next("-");
+      }
+      while (ch >= "0" && ch <= "9") {
+        string += ch;
+        next();
+      }
+      if (ch === ".") {
+        string += ".";
+        while (next() && ch >= "0" && ch <= "9") {
+          string += ch;
+        }
+      }
+      if (ch === "e" || ch === "E") {
+        string += ch;
+        next();
+        if (ch === "-" || ch === "+") {
+          string += ch;
+          next();
+        }
+        while (ch >= "0" && ch <= "9") {
+          string += ch;
+          next();
+        }
+      }
+      number = +string;
+      if (!isFinite(number)) {
+        error("Bad number");
+      } else if (number >= Int64.MAX_INT || number <= Int64.MIN_INT) {
+        // Return raw string for further process in TJSONProtocol
+        return string;
+      } else {
+        return number;
+      }
+    },
+    string = function () {
+      // Parse a string value.
 
-// Get the next character. When there are no more characters,
-// return the empty string.
+      var hex,
+        i,
+        string = "",
+        uffff;
 
-            ch = text.charAt(at);
-            at += 1;
-            return ch;
-        },
+      // When parsing for string values, we must look for " and \ characters.
 
-        number = function () {
-
-// Parse a number value.
-
-            var number,
-                string = '';
-
-            if (ch === '-') {
-                string = '-';
-                next('-');
-            }
-            while (ch >= '0' && ch <= '9') {
-                string += ch;
-                next();
-            }
-            if (ch === '.') {
-                string += '.';
-                while (next() && ch >= '0' && ch <= '9') {
-                    string += ch;
+      if (ch === '"') {
+        while (next()) {
+          if (ch === '"') {
+            next();
+            return string;
+          }
+          if (ch === "\\") {
+            next();
+            if (ch === "u") {
+              uffff = 0;
+              for (i = 0; i < 4; i += 1) {
+                hex = parseInt(next(), 16);
+                if (!isFinite(hex)) {
+                  break;
                 }
-            }
-            if (ch === 'e' || ch === 'E') {
-                string += ch;
-                next();
-                if (ch === '-' || ch === '+') {
-                    string += ch;
-                    next();
-                }
-                while (ch >= '0' && ch <= '9') {
-                    string += ch;
-                    next();
-                }
-            }
-            number = +string;
-            if (!isFinite(number)) {
-                error("Bad number");
-            } else if (number >= Int64.MAX_INT || number <= Int64.MIN_INT) {
-                // Return raw string for further process in TJSONProtocol
-                return string;
+                uffff = uffff * 16 + hex;
+              }
+              string += String.fromCharCode(uffff);
+            } else if (typeof escapee[ch] === "string") {
+              string += escapee[ch];
             } else {
-                return number;
+              break;
             }
-        },
-
-        string = function () {
-
-// Parse a string value.
-
-            var hex,
-                i,
-                string = '',
-                uffff;
-
-// When parsing for string values, we must look for " and \ characters.
-
-            if (ch === '"') {
-                while (next()) {
-                    if (ch === '"') {
-                        next();
-                        return string;
-                    }
-                    if (ch === '\\') {
-                        next();
-                        if (ch === 'u') {
-                            uffff = 0;
-                            for (i = 0; i < 4; i += 1) {
-                                hex = parseInt(next(), 16);
-                                if (!isFinite(hex)) {
-                                    break;
-                                }
-                                uffff = uffff * 16 + hex;
-                            }
-                            string += String.fromCharCode(uffff);
-                        } else if (typeof escapee[ch] === 'string') {
-                            string += escapee[ch];
-                        } else {
-                            break;
-                        }
-                    } else {
-                        string += ch;
-                    }
-                }
-            }
-            error("Bad string");
-        },
-
-        white = function () {
-
-// Skip whitespace.
-
-            while (ch && ch <= ' ') {
-                next();
-            }
-        },
-
-        word = function () {
-
-// true, false, or null.
-
-            switch (ch) {
-            case 't':
-                next('t');
-                next('r');
-                next('u');
-                next('e');
-                return true;
-            case 'f':
-                next('f');
-                next('a');
-                next('l');
-                next('s');
-                next('e');
-                return false;
-            case 'n':
-                next('n');
-                next('u');
-                next('l');
-                next('l');
-                return null;
-            }
-            error("Unexpected '" + ch + "'");
-        },
-
-        value,  // Place holder for the value function.
-
-        array = function () {
-
-// Parse an array value.
-
-            var array = [];
-
-            if (ch === '[') {
-                next('[');
-                white();
-                if (ch === ']') {
-                    next(']');
-                    return array;   // empty array
-                }
-                while (ch) {
-                    array.push(value());
-                    white();
-                    if (ch === ']') {
-                        next(']');
-                        return array;
-                    }
-                    next(',');
-                    white();
-                }
-            }
-            error("Bad array");
-        },
-
-        object = function () {
-
-// Parse an object value.
-
-            var key,
-                object = {};
-
-            if (ch === '{') {
-                next('{');
-                white();
-                if (ch === '}') {
-                    next('}');
-                    return object;   // empty object
-                }
-                while (ch) {
-                    key = string();
-                    white();
-                    next(':');
-                    if (Object.hasOwnProperty.call(object, key)) {
-                        error('Duplicate key "' + key + '"');
-                    }
-                    object[key] = value();
-                    white();
-                    if (ch === '}') {
-                        next('}');
-                        return object;
-                    }
-                    next(',');
-                    white();
-                }
-            }
-            error("Bad object");
-        };
-
-    value = function () {
-
-// Parse a JSON value. It could be an object, an array, a string, a number,
-// or a word.
-
-        white();
-        switch (ch) {
-        case '{':
-            return object();
-        case '[':
-            return array();
-        case '"':
-            return string();
-        case '-':
-            return number();
-        default:
-            return ch >= '0' && ch <= '9'
-                ? number()
-                : word();
+          } else {
+            string += ch;
+          }
         }
+      }
+      error("Bad string");
+    },
+    white = function () {
+      // Skip whitespace.
+
+      while (ch && ch <= " ") {
+        next();
+      }
+    },
+    word = function () {
+      // true, false, or null.
+
+      switch (ch) {
+        case "t":
+          next("t");
+          next("r");
+          next("u");
+          next("e");
+          return true;
+        case "f":
+          next("f");
+          next("a");
+          next("l");
+          next("s");
+          next("e");
+          return false;
+        case "n":
+          next("n");
+          next("u");
+          next("l");
+          next("l");
+          return null;
+      }
+      error("Unexpected '" + ch + "'");
+    },
+    value, // Place holder for the value function.
+    array = function () {
+      // Parse an array value.
+
+      var array = [];
+
+      if (ch === "[") {
+        next("[");
+        white();
+        if (ch === "]") {
+          next("]");
+          return array; // empty array
+        }
+        while (ch) {
+          array.push(value());
+          white();
+          if (ch === "]") {
+            next("]");
+            return array;
+          }
+          next(",");
+          white();
+        }
+      }
+      error("Bad array");
+    },
+    object = function () {
+      // Parse an object value.
+
+      var key,
+        object = {};
+
+      if (ch === "{") {
+        next("{");
+        white();
+        if (ch === "}") {
+          next("}");
+          return object; // empty object
+        }
+        while (ch) {
+          key = string();
+          white();
+          next(":");
+          if (Object.hasOwnProperty.call(object, key)) {
+            error('Duplicate key "' + key + '"');
+          }
+          object[key] = value();
+          white();
+          if (ch === "}") {
+            next("}");
+            return object;
+          }
+          next(",");
+          white();
+        }
+      }
+      error("Bad object");
     };
 
-// Return the json_parse function. It will have access to all of the above
-// functions and variables.
+  value = function () {
+    // Parse a JSON value. It could be an object, an array, a string, a number,
+    // or a word.
 
-    return function (source) {
-        var result;
+    white();
+    switch (ch) {
+      case "{":
+        return object();
+      case "[":
+        return array();
+      case '"':
+        return string();
+      case "-":
+        return number();
+      default:
+        return ch >= "0" && ch <= "9" ? number() : word();
+    }
+  };
 
-        text = source;
-        at = 0;
-        ch = ' ';
-        result = value();
-        white();
-        if (ch) {
-            error("Syntax error");
-        }
+  // Return the json_parse function. It will have access to all of the above
+  // functions and variables.
 
-        return result;
-    };
-}());
+  return function (source) {
+    var result;
+
+    text = source;
+    at = 0;
+    ch = " ";
+    result = value();
+    white();
+    if (ch) {
+      error("Syntax error");
+    }
+
+    return result;
+  };
+})());
diff --git a/lib/nodejs/lib/thrift/json_protocol.js b/lib/nodejs/lib/thrift/json_protocol.js
index 7e2b7c9..31dcb81 100644
--- a/lib/nodejs/lib/thrift/json_protocol.js
+++ b/lib/nodejs/lib/thrift/json_protocol.js
@@ -17,15 +17,15 @@
  * under the License.
  */
 
-var Int64 = require('node-int64');
-var Thrift = require('./thrift');
+var Int64 = require("node-int64");
+var Thrift = require("./thrift");
 var Type = Thrift.Type;
 var util = require("util");
 
-var Int64Util = require('./int64_util');
-var json_parse = require('./json_parse');
+var Int64Util = require("./int64_util");
+var json_parse = require("./json_parse");
 
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
 module.exports = TJSONProtocol;
 
@@ -43,7 +43,7 @@
   this.tstack = [];
   this.tpos = [];
   this.trans = trans;
-};
+}
 
 /**
  * Thrift IDL type Id to string mapping.
@@ -89,12 +89,12 @@
  */
 TJSONProtocol.Version = 1;
 
-TJSONProtocol.prototype.flush = function() {
+TJSONProtocol.prototype.flush = function () {
   this.writeToTransportIfStackIsFlushable();
   return this.trans.flush();
 };
 
-TJSONProtocol.prototype.writeToTransportIfStackIsFlushable = function() {
+TJSONProtocol.prototype.writeToTransportIfStackIsFlushable = function () {
   if (this.tstack.length === 1) {
     this.trans.write(this.tstack.pop());
   }
@@ -106,20 +106,29 @@
  * @param {Thrift.MessageType} messageType - The type of method call.
  * @param {number} seqid - The sequence number of this call (always 0 in Apache Thrift).
  */
-TJSONProtocol.prototype.writeMessageBegin = function(name, messageType, seqid) {
-  this.tstack.push([TJSONProtocol.Version, '"' + name + '"', messageType, seqid]);
+TJSONProtocol.prototype.writeMessageBegin = function (
+  name,
+  messageType,
+  seqid,
+) {
+  this.tstack.push([
+    TJSONProtocol.Version,
+    '"' + name + '"',
+    messageType,
+    seqid,
+  ]);
 };
 
 /**
  * Serializes the end of a Thrift RPC message.
  */
-TJSONProtocol.prototype.writeMessageEnd = function() {
+TJSONProtocol.prototype.writeMessageEnd = function () {
   var obj = this.tstack.pop();
 
   this.wobj = this.tstack.pop();
   this.wobj.push(obj);
 
-  this.wbuf = '[' + this.wobj.join(',') + ']';
+  this.wbuf = "[" + this.wobj.join(",") + "]";
 
   // we assume there is nothing more to come so we write
   this.trans.write(this.wbuf);
@@ -129,7 +138,7 @@
  * Serializes the beginning of a struct.
  * @param {string} name - The name of the struct.
  */
-TJSONProtocol.prototype.writeStructBegin = function(name) {
+TJSONProtocol.prototype.writeStructBegin = function (name) {
   this.tpos.push(this.tstack.length);
   this.tstack.push({});
 };
@@ -137,22 +146,22 @@
 /**
  * Serializes the end of a struct.
  */
-TJSONProtocol.prototype.writeStructEnd = function() {
+TJSONProtocol.prototype.writeStructEnd = function () {
   var p = this.tpos.pop();
   var struct = this.tstack[p];
-  var str = '{';
+  var str = "{";
   var first = true;
   for (var key in struct) {
     if (first) {
       first = false;
     } else {
-      str += ',';
+      str += ",";
     }
 
-    str += key + ':' + struct[key];
+    str += key + ":" + struct[key];
   }
 
-  str += '}';
+  str += "}";
   this.tstack[p] = str;
 
   this.writeToTransportIfStackIsFlushable();
@@ -164,26 +173,27 @@
  * @param {Thrift.Protocol.Type} fieldType - The data type of the field.
  * @param {number} fieldId - The field's unique identifier.
  */
-TJSONProtocol.prototype.writeFieldBegin = function(name, fieldType, fieldId) {
+TJSONProtocol.prototype.writeFieldBegin = function (name, fieldType, fieldId) {
   this.tpos.push(this.tstack.length);
-  this.tstack.push({ 'fieldId': '"' +
-    fieldId + '"', 'fieldType': TJSONProtocol.Type[fieldType]
+  this.tstack.push({
+    fieldId: '"' + fieldId + '"',
+    fieldType: TJSONProtocol.Type[fieldType],
   });
 };
 
 /**
  * Serializes the end of a field.
  */
-TJSONProtocol.prototype.writeFieldEnd = function() {
+TJSONProtocol.prototype.writeFieldEnd = function () {
   var value = this.tstack.pop();
   var fieldInfo = this.tstack.pop();
 
-  if (':' + value === ":[object Object]") {
-    this.tstack[this.tstack.length - 1][fieldInfo.fieldId] = '{' +
-      fieldInfo.fieldType + ':' + JSON.stringify(value) + '}';
+  if (":" + value === ":[object Object]") {
+    this.tstack[this.tstack.length - 1][fieldInfo.fieldId] =
+      "{" + fieldInfo.fieldType + ":" + JSON.stringify(value) + "}";
   } else {
-    this.tstack[this.tstack.length - 1][fieldInfo.fieldId] = '{' +
-      fieldInfo.fieldType + ':' + value + '}';
+    this.tstack[this.tstack.length - 1][fieldInfo.fieldId] =
+      "{" + fieldInfo.fieldType + ":" + value + "}";
   }
   this.tpos.pop();
 
@@ -193,8 +203,7 @@
 /**
  * Serializes the end of the set of fields for a struct.
  */
-TJSONProtocol.prototype.writeFieldStop = function() {
-};
+TJSONProtocol.prototype.writeFieldStop = function () {};
 
 /**
  * Serializes the beginning of a map collection.
@@ -202,16 +211,20 @@
  * @param {Thrift.Type} valType - The data type of the value.
  * @param {number} [size] - The number of elements in the map (ignored).
  */
-TJSONProtocol.prototype.writeMapBegin = function(keyType, valType, size) {
+TJSONProtocol.prototype.writeMapBegin = function (keyType, valType, size) {
   //size is invalid, we'll set it on end.
   this.tpos.push(this.tstack.length);
-  this.tstack.push([TJSONProtocol.Type[keyType], TJSONProtocol.Type[valType], 0]);
+  this.tstack.push([
+    TJSONProtocol.Type[keyType],
+    TJSONProtocol.Type[valType],
+    0,
+  ]);
 };
 
 /**
  * Serializes the end of a map.
  */
-TJSONProtocol.prototype.writeMapEnd = function() {
+TJSONProtocol.prototype.writeMapEnd = function () {
   var p = this.tpos.pop();
 
   if (p == this.tstack.length) {
@@ -219,14 +232,14 @@
   }
 
   if ((this.tstack.length - p - 1) % 2 !== 0) {
-    this.tstack.push('');
+    this.tstack.push("");
   }
 
   var size = (this.tstack.length - p - 1) / 2;
 
   this.tstack[p][this.tstack[p].length - 1] = size;
 
-  var map = '}';
+  var map = "}";
   var first = true;
   while (this.tstack.length > p + 1) {
     var v = this.tstack.pop();
@@ -234,16 +247,18 @@
     if (first) {
       first = false;
     } else {
-      map = ',' + map;
+      map = "," + map;
     }
 
-    if (! isNaN(k)) { k = '"' + k + '"'; } //json "keys" need to be strings
-    map = k + ':' + v + map;
+    if (!isNaN(k)) {
+      k = '"' + k + '"';
+    } //json "keys" need to be strings
+    map = k + ":" + v + map;
   }
-  map = '{' + map;
+  map = "{" + map;
 
   this.tstack[p].push(map);
-  this.tstack[p] = '[' + this.tstack[p].join(',') + ']';
+  this.tstack[p] = "[" + this.tstack[p].join(",") + "]";
 
   this.writeToTransportIfStackIsFlushable();
 };
@@ -253,7 +268,7 @@
  * @param {Thrift.Type} elemType - The data type of the elements.
  * @param {number} size - The number of elements in the list.
  */
-TJSONProtocol.prototype.writeListBegin = function(elemType, size) {
+TJSONProtocol.prototype.writeListBegin = function (elemType, size) {
   this.tpos.push(this.tstack.length);
   this.tstack.push([TJSONProtocol.Type[elemType], size]);
 };
@@ -261,7 +276,7 @@
 /**
  * Serializes the end of a list.
  */
-TJSONProtocol.prototype.writeListEnd = function() {
+TJSONProtocol.prototype.writeListEnd = function () {
   var p = this.tpos.pop();
 
   while (this.tstack.length > p + 1) {
@@ -270,7 +285,7 @@
     this.tstack[p].push(tmpVal);
   }
 
-  this.tstack[p] = '[' + this.tstack[p].join(',') + ']';
+  this.tstack[p] = "[" + this.tstack[p].join(",") + "]";
 
   this.writeToTransportIfStackIsFlushable();
 };
@@ -280,15 +295,15 @@
  * @param {Thrift.Type} elemType - The data type of the elements.
  * @param {number} size - The number of elements in the list.
  */
-TJSONProtocol.prototype.writeSetBegin = function(elemType, size) {
-    this.tpos.push(this.tstack.length);
-    this.tstack.push([TJSONProtocol.Type[elemType], size]);
+TJSONProtocol.prototype.writeSetBegin = function (elemType, size) {
+  this.tpos.push(this.tstack.length);
+  this.tstack.push([TJSONProtocol.Type[elemType], size]);
 };
 
 /**
  * Serializes the end of a set.
  */
-TJSONProtocol.prototype.writeSetEnd = function() {
+TJSONProtocol.prototype.writeSetEnd = function () {
   var p = this.tpos.pop();
 
   while (this.tstack.length > p + 1) {
@@ -297,33 +312,33 @@
     this.tstack[p].push(tmpVal);
   }
 
-  this.tstack[p] = '[' + this.tstack[p].join(',') + ']';
+  this.tstack[p] = "[" + this.tstack[p].join(",") + "]";
 
   this.writeToTransportIfStackIsFlushable();
 };
 
 /** Serializes a boolean */
-TJSONProtocol.prototype.writeBool = function(bool) {
+TJSONProtocol.prototype.writeBool = function (bool) {
   this.tstack.push(bool ? 1 : 0);
 };
 
 /** Serializes a number */
-TJSONProtocol.prototype.writeByte = function(byte) {
+TJSONProtocol.prototype.writeByte = function (byte) {
   this.tstack.push(byte);
 };
 
 /** Serializes a number */
-TJSONProtocol.prototype.writeI16 = function(i16) {
+TJSONProtocol.prototype.writeI16 = function (i16) {
   this.tstack.push(i16);
 };
 
 /** Serializes a number */
-TJSONProtocol.prototype.writeI32 = function(i32) {
+TJSONProtocol.prototype.writeI32 = function (i32) {
   this.tstack.push(i32);
 };
 
 /** Serializes a number */
-TJSONProtocol.prototype.writeI64 = function(i64) {
+TJSONProtocol.prototype.writeI64 = function (i64) {
   if (i64 instanceof Int64) {
     this.tstack.push(Int64Util.toDecimalString(i64));
   } else {
@@ -332,69 +347,81 @@
 };
 
 /** Serializes a number */
-TJSONProtocol.prototype.writeDouble = function(dub) {
+TJSONProtocol.prototype.writeDouble = function (dub) {
   this.tstack.push(dub);
 };
 
 /** Serializes a string */
-TJSONProtocol.prototype.writeString = function(arg) {
+TJSONProtocol.prototype.writeString = function (arg) {
   // We do not encode uri components for wire transfer:
   if (arg === null) {
-      this.tstack.push(null);
+    this.tstack.push(null);
   } else {
-      if (typeof arg === 'string') {
-        var str = arg;
-      } else if (arg instanceof Buffer) {
-        var str = arg.toString('utf8');
-      } else {
-        throw new Error('writeString called without a string/Buffer argument: ' + arg);
-      }
+    if (typeof arg === "string") {
+      var str = arg;
+    } else if (arg instanceof Buffer) {
+      var str = arg.toString("utf8");
+    } else {
+      throw new Error(
+        "writeString called without a string/Buffer argument: " + arg,
+      );
+    }
 
-      // concat may be slower than building a byte buffer
-      var escapedString = '';
-      for (var i = 0; i < str.length; i++) {
-          var ch = str.charAt(i);      // a single double quote: "
-          if (ch === '\"') {
-              escapedString += '\\\"'; // write out as: \"
-          } else if (ch === '\\') {    // a single backslash: \
-              escapedString += '\\\\'; // write out as: \\
-          /* Currently escaped forward slashes break TJSONProtocol.
-           * As it stands, we can simply pass forward slashes into
-           * our strings across the wire without being escaped.
-           * I think this is the protocol's bug, not thrift.js
-           * } else if(ch === '/') {   // a single forward slash: /
-           *  escapedString += '\\/';  // write out as \/
-           * }
-           */
-          } else if (ch === '\b') {    // a single backspace: invisible
-              escapedString += '\\b';  // write out as: \b"
-          } else if (ch === '\f') {    // a single formfeed: invisible
-              escapedString += '\\f';  // write out as: \f"
-          } else if (ch === '\n') {    // a single newline: invisible
-              escapedString += '\\n';  // write out as: \n"
-          } else if (ch === '\r') {    // a single return: invisible
-              escapedString += '\\r';  // write out as: \r"
-          } else if (ch === '\t') {    // a single tab: invisible
-              escapedString += '\\t';  // write out as: \t"
-          } else {
-              escapedString += ch;     // Else it need not be escaped
-          }
+    // concat may be slower than building a byte buffer
+    var escapedString = "";
+    for (var i = 0; i < str.length; i++) {
+      var ch = str.charAt(i); // a single double quote: "
+      if (ch === '\"') {
+        escapedString += '\\\"'; // write out as: \"
+      } else if (ch === "\\") {
+        // a single backslash: \
+        escapedString += "\\\\"; // write out as: \\
+        /* Currently escaped forward slashes break TJSONProtocol.
+         * As it stands, we can simply pass forward slashes into
+         * our strings across the wire without being escaped.
+         * I think this is the protocol's bug, not thrift.js
+         * } else if(ch === '/') {   // a single forward slash: /
+         *  escapedString += '\\/';  // write out as \/
+         * }
+         */
+      } else if (ch === "\b") {
+        // a single backspace: invisible
+        escapedString += "\\b"; // write out as: \b"
+      } else if (ch === "\f") {
+        // a single formfeed: invisible
+        escapedString += "\\f"; // write out as: \f"
+      } else if (ch === "\n") {
+        // a single newline: invisible
+        escapedString += "\\n"; // write out as: \n"
+      } else if (ch === "\r") {
+        // a single return: invisible
+        escapedString += "\\r"; // write out as: \r"
+      } else if (ch === "\t") {
+        // a single tab: invisible
+        escapedString += "\\t"; // write out as: \t"
+      } else {
+        escapedString += ch; // Else it need not be escaped
       }
-      this.tstack.push('"' + escapedString + '"');
+    }
+    this.tstack.push('"' + escapedString + '"');
   }
 };
 
 /** Serializes a string */
-TJSONProtocol.prototype.writeBinary = function(arg) {
-  if (typeof arg === 'string') {
-    var buf = new Buffer(arg, 'binary');
-  } else if (arg instanceof Buffer ||
-             Object.prototype.toString.call(arg) == '[object Uint8Array]')  {
+TJSONProtocol.prototype.writeBinary = function (arg) {
+  if (typeof arg === "string") {
+    var buf = new Buffer(arg, "binary");
+  } else if (
+    arg instanceof Buffer ||
+    Object.prototype.toString.call(arg) == "[object Uint8Array]"
+  ) {
     var buf = arg;
   } else {
-    throw new Error('writeBinary called without a string/Buffer argument: ' + arg);
+    throw new Error(
+      "writeBinary called without a string/Buffer argument: " + arg,
+    );
   }
-  this.tstack.push('"' + buf.toString('base64') + '"');
+  this.tstack.push('"' + buf.toString("base64") + '"');
 };
 
 /**
@@ -408,7 +435,7 @@
  * Deserializes the beginning of a message.
  * @returns {AnonReadMessageBeginReturn}
  */
-TJSONProtocol.prototype.readMessageBegin = function() {
+TJSONProtocol.prototype.readMessageBegin = function () {
   this.rstack = [];
   this.rpos = [];
 
@@ -419,7 +446,8 @@
   }
   var cursor = transBuf.readIndex;
 
-  if (transBuf.buf[cursor] !== 0x5B) { //[
+  if (transBuf.buf[cursor] !== 0x5b) {
+    //[
     throw new Error("Malformed JSON input, no opening bracket");
   }
 
@@ -432,22 +460,27 @@
     var chr = transBuf.buf[cursor];
     //we use hexa charcode here because data[i] returns an int and not a char
     if (inString) {
-      if (chr === 0x22) { //"
+      if (chr === 0x22) {
+        //"
         inString = false;
-      } else if (chr === 0x5C) { //\
+      } else if (chr === 0x5c) {
+        //\
         //escaped character, skip
         cursor += 1;
       }
     } else {
-      if (chr === 0x5B) { //[
+      if (chr === 0x5b) {
+        //[
         openBracketCount += 1;
-      } else if (chr === 0x5D) { //]
+      } else if (chr === 0x5d) {
+        //]
         openBracketCount -= 1;
         if (openBracketCount === 0) {
           //end of json message detected
           break;
         }
-      } else if (chr === 0x22) { //"
+      } else if (chr === 0x22) {
+        //"
         inString = true;
       }
     }
@@ -459,13 +492,15 @@
   }
 
   //Reconstitute the JSON object and conume the necessary bytes
-  this.robj = json_parse(transBuf.buf.slice(transBuf.readIndex, cursor+1).toString());
+  this.robj = json_parse(
+    transBuf.buf.slice(transBuf.readIndex, cursor + 1).toString(),
+  );
   this.trans.consume(cursor + 1 - transBuf.readIndex);
 
   //Verify the protocol version
   var version = this.robj.shift();
   if (version != TJSONProtocol.Version) {
-    throw new Error('Wrong thrift protocol version: ' + version);
+    throw new Error("Wrong thrift protocol version: " + version);
   }
 
   //Objectify the thrift message {name/type/sequence-number} for return
@@ -479,17 +514,16 @@
 };
 
 /** Deserializes the end of a message. */
-TJSONProtocol.prototype.readMessageEnd = function() {
-};
+TJSONProtocol.prototype.readMessageEnd = function () {};
 
 /**
  * Deserializes the beginning of a struct.
  * @param {string} [name] - The name of the struct (ignored)
  * @returns {object} - An object with an empty string fname property
  */
-TJSONProtocol.prototype.readStructBegin = function() {
+TJSONProtocol.prototype.readStructBegin = function () {
   var r = {};
-  r.fname = '';
+  r.fname = "";
 
   //incase this is an array of structs
   if (this.rstack[this.rstack.length - 1] instanceof Array) {
@@ -500,7 +534,7 @@
 };
 
 /** Deserializes the end of a struct. */
-TJSONProtocol.prototype.readStructEnd = function() {
+TJSONProtocol.prototype.readStructEnd = function () {
   this.rstack.pop();
 };
 
@@ -515,14 +549,14 @@
  * Deserializes the beginning of a field.
  * @returns {AnonReadFieldBeginReturn}
  */
-TJSONProtocol.prototype.readFieldBegin = function() {
+TJSONProtocol.prototype.readFieldBegin = function () {
   var r = {};
 
   var fid = -1;
   var ftype = Type.STOP;
 
   //get a fieldId
-  for (var f in (this.rstack[this.rstack.length - 1])) {
+  for (var f in this.rstack[this.rstack.length - 1]) {
     if (f === null) {
       continue;
     }
@@ -543,17 +577,18 @@
   if (fid != -1) {
     //should only be 1 of these but this is the only
     //way to match a key
-    for (var i in (this.rstack[this.rstack.length - 1])) {
+    for (var i in this.rstack[this.rstack.length - 1]) {
       if (TJSONProtocol.RType[i] === null) {
         continue;
       }
 
       ftype = TJSONProtocol.RType[i];
-      this.rstack[this.rstack.length - 1] = this.rstack[this.rstack.length - 1][i];
+      this.rstack[this.rstack.length - 1] =
+        this.rstack[this.rstack.length - 1][i];
     }
   }
 
-  r.fname = '';
+  r.fname = "";
   r.ftype = ftype;
   r.fid = fid;
 
@@ -561,7 +596,7 @@
 };
 
 /** Deserializes the end of a field. */
-TJSONProtocol.prototype.readFieldEnd = function() {
+TJSONProtocol.prototype.readFieldEnd = function () {
   var pos = this.rpos.pop();
 
   //get back to the right place in the stack
@@ -581,7 +616,7 @@
  * Deserializes the beginning of a map.
  * @returns {AnonReadMapBeginReturn}
  */
-TJSONProtocol.prototype.readMapBegin = function() {
+TJSONProtocol.prototype.readMapBegin = function () {
   var map = this.rstack.pop();
   var first = map.shift();
   if (first instanceof Array) {
@@ -595,7 +630,6 @@
   r.vtype = TJSONProtocol.RType[map.shift()];
   r.size = map.shift();
 
-
   this.rpos.push(this.rstack.length);
   this.rstack.push(map.shift());
 
@@ -603,7 +637,7 @@
 };
 
 /** Deserializes the end of a map. */
-TJSONProtocol.prototype.readMapEnd = function() {
+TJSONProtocol.prototype.readMapEnd = function () {
   this.readFieldEnd();
 };
 
@@ -617,7 +651,7 @@
  * Deserializes the beginning of a list.
  * @returns {AnonReadColBeginReturn}
  */
-TJSONProtocol.prototype.readListBegin = function() {
+TJSONProtocol.prototype.readListBegin = function () {
   var list = this.rstack[this.rstack.length - 1];
 
   var r = {};
@@ -631,7 +665,7 @@
 };
 
 /** Deserializes the end of a list. */
-TJSONProtocol.prototype.readListEnd = function() {
+TJSONProtocol.prototype.readListEnd = function () {
   var pos = this.rpos.pop() - 2;
   var st = this.rstack;
   st.pop();
@@ -644,33 +678,33 @@
  * Deserializes the beginning of a set.
  * @returns {AnonReadColBeginReturn}
  */
-TJSONProtocol.prototype.readSetBegin = function() {
+TJSONProtocol.prototype.readSetBegin = function () {
   return this.readListBegin();
 };
 
 /** Deserializes the end of a set. */
-TJSONProtocol.prototype.readSetEnd = function() {
+TJSONProtocol.prototype.readSetEnd = function () {
   return this.readListEnd();
 };
 
-TJSONProtocol.prototype.readBool = function() {
-  return this.readValue() == '1';
+TJSONProtocol.prototype.readBool = function () {
+  return this.readValue() == "1";
 };
 
-TJSONProtocol.prototype.readByte = function() {
+TJSONProtocol.prototype.readByte = function () {
   return this.readI32();
 };
 
-TJSONProtocol.prototype.readI16 = function() {
+TJSONProtocol.prototype.readI16 = function () {
   return this.readI32();
 };
 
-TJSONProtocol.prototype.readI32 = function(f) {
+TJSONProtocol.prototype.readI32 = function (f) {
   return +this.readValue();
-}
+};
 
 /** Returns the next value found in the protocol buffer */
-TJSONProtocol.prototype.readValue = function(f) {
+TJSONProtocol.prototype.readValue = function (f) {
   if (f === undefined) {
     f = this.rstack[this.rstack.length - 1];
   }
@@ -702,9 +736,9 @@
   return r.value;
 };
 
-TJSONProtocol.prototype.readI64 = function() {
-  var n = this.readValue()
-  if (typeof n === 'string') {
+TJSONProtocol.prototype.readI64 = function () {
+  var n = this.readValue();
+  if (typeof n === "string") {
     // Assuming no one is sending in 1.11111e+33 format
     return Int64Util.fromDecimalString(n);
   } else {
@@ -712,15 +746,15 @@
   }
 };
 
-TJSONProtocol.prototype.readDouble = function() {
+TJSONProtocol.prototype.readDouble = function () {
   return this.readI32();
 };
 
-TJSONProtocol.prototype.readBinary = function() {
-  return new Buffer(this.readValue(), 'base64');
+TJSONProtocol.prototype.readBinary = function () {
+  return new Buffer(this.readValue(), "base64");
 };
 
-TJSONProtocol.prototype.readString = function() {
+TJSONProtocol.prototype.readString = function () {
   return this.readValue();
 };
 
@@ -729,15 +763,15 @@
  * @readonly
  * @returns {Thrift.Transport} The underlying transport.
  */
-TJSONProtocol.prototype.getTransport = function() {
+TJSONProtocol.prototype.getTransport = function () {
   return this.trans;
 };
 
 /**
  * Method to arbitrarily skip over data
  */
-TJSONProtocol.prototype.skip = function(type) {
-    switch (type) {
+TJSONProtocol.prototype.skip = function (type) {
+  switch (type) {
     case Type.BOOL:
       this.readBool();
       break;
@@ -794,6 +828,6 @@
       this.readListEnd();
       break;
     default:
-      throw new  Error("Invalid type: " + type);
+      throw new Error("Invalid type: " + type);
   }
 };
diff --git a/lib/nodejs/lib/thrift/log.js b/lib/nodejs/lib/thrift/log.js
index 053e813..82d8a22 100644
--- a/lib/nodejs/lib/thrift/log.js
+++ b/lib/nodejs/lib/thrift/log.js
@@ -17,17 +17,17 @@
  * under the License.
  */
 
-var util = require('util');
+var util = require("util");
 
 var disabled = function () {};
 var logFunc = console.log;
-var logLevel = 'error'; // default level
+var logLevel = "error"; // default level
 
 function factory(level) {
   return function () {
     // better use spread syntax, but due to compatibility,
     // use legacy method here.
-    var args = ['thrift: [' + level + '] '].concat(Array.from(arguments));
+    var args = ["thrift: [" + level + "] "].concat(Array.from(arguments));
     return logFunc(util.format.apply(null, args));
   };
 }
@@ -42,22 +42,22 @@
   logFunc = func;
 };
 
-var setLogLevel = exports.setLogLevel = function (level) {
+var setLogLevel = (exports.setLogLevel = function (level) {
   trace = debug = error = warning = info = disabled;
   logLevel = level;
   switch (logLevel) {
-  case 'trace':
-    trace = factory('TRACE');
-  case 'debug':
-    debug = factory('DEBUG');
-  case 'error':
-    error = factory('ERROR');
-  case 'warning':
-    warning = factory('WARN');
-  case 'info':
-    info = factory('INFO');
+    case "trace":
+      trace = factory("TRACE");
+    case "debug":
+      debug = factory("DEBUG");
+    case "error":
+      error = factory("ERROR");
+    case "warning":
+      warning = factory("WARN");
+    case "info":
+      info = factory("INFO");
   }
-};
+});
 
 // set default
 setLogLevel(logLevel);
diff --git a/lib/nodejs/lib/thrift/multiplexed_processor.js b/lib/nodejs/lib/thrift/multiplexed_processor.js
index 67b62f7..864d66d 100644
--- a/lib/nodejs/lib/thrift/multiplexed_processor.js
+++ b/lib/nodejs/lib/thrift/multiplexed_processor.js
@@ -16,31 +16,38 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var Thrift = require('./thrift');
+var Thrift = require("./thrift");
 
 exports.MultiplexedProcessor = MultiplexedProcessor;
 
 function MultiplexedProcessor(stream, options) {
   this.services = {};
-};
+}
 
-MultiplexedProcessor.prototype.registerProcessor = function(name, handler) {
+MultiplexedProcessor.prototype.registerProcessor = function (name, handler) {
   this.services[name] = handler;
 };
 
-MultiplexedProcessor.prototype.process = function(inp, out) {
+MultiplexedProcessor.prototype.process = function (inp, out) {
   var begin = inp.readMessageBegin();
 
-  if (begin.mtype != Thrift.MessageType.CALL && begin.mtype != Thrift.MessageType.ONEWAY) {
-    throw new Thrift.TException('TMultiplexedProcessor: Unexpected message type');
+  if (
+    begin.mtype != Thrift.MessageType.CALL &&
+    begin.mtype != Thrift.MessageType.ONEWAY
+  ) {
+    throw new Thrift.TException(
+      "TMultiplexedProcessor: Unexpected message type",
+    );
   }
 
-  var p = begin.fname.split(':');
+  var p = begin.fname.split(":");
   var sname = p[0];
   var fname = p[1];
 
-  if (! (sname in this.services)) {
-    throw new Thrift.TException('TMultiplexedProcessor: Unknown service: ' + sname);
+  if (!(sname in this.services)) {
+    throw new Thrift.TException(
+      "TMultiplexedProcessor: Unknown service: " + sname,
+    );
   }
 
   //construct a proxy object which stubs the readMessageBegin
@@ -51,11 +58,11 @@
     inpProxy[attr] = inp[attr];
   }
 
-  inpProxy.readMessageBegin = function() {
+  inpProxy.readMessageBegin = function () {
     return {
       fname: fname,
       mtype: begin.mtype,
-      rseqid: begin.rseqid
+      rseqid: begin.rseqid,
     };
   };
 
diff --git a/lib/nodejs/lib/thrift/multiplexed_protocol.js b/lib/nodejs/lib/thrift/multiplexed_protocol.js
index d078aa2..1d2df96 100644
--- a/lib/nodejs/lib/thrift/multiplexed_protocol.js
+++ b/lib/nodejs/lib/thrift/multiplexed_protocol.js
@@ -16,55 +16,69 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
-var Thrift = require('./thrift');
+var util = require("util");
+var Thrift = require("./thrift");
 
 exports.Multiplexer = Multiplexer;
 
 function Wrapper(serviceName, protocol, connection) {
-
   function MultiplexProtocol(trans, strictRead, strictWrite) {
     protocol.call(this, trans, strictRead, strictWrite);
-  };
+  }
 
   util.inherits(MultiplexProtocol, protocol);
 
-  MultiplexProtocol.prototype.writeMessageBegin = function(name, type, seqid) {
+  MultiplexProtocol.prototype.writeMessageBegin = function (name, type, seqid) {
     if (type == Thrift.MessageType.CALL || type == Thrift.MessageType.ONEWAY) {
       connection.seqId2Service[seqid] = serviceName;
-      MultiplexProtocol.super_.prototype.writeMessageBegin.call(this,
-                                                                serviceName + ":" + name,
-                                                                type,
-                                                                seqid);
+      MultiplexProtocol.super_.prototype.writeMessageBegin.call(
+        this,
+        serviceName + ":" + name,
+        type,
+        seqid,
+      );
     } else {
-      MultiplexProtocol.super_.prototype.writeMessageBegin.call(this, name, type, seqid);
+      MultiplexProtocol.super_.prototype.writeMessageBegin.call(
+        this,
+        name,
+        type,
+        seqid,
+      );
     }
   };
 
   return MultiplexProtocol;
-};
+}
 
 function Multiplexer() {
   this.seqid = 0;
-};
+}
 
-Multiplexer.prototype.createClient = function(serviceName, ServiceClient, connection) {
+Multiplexer.prototype.createClient = function (
+  serviceName,
+  ServiceClient,
+  connection,
+) {
   if (ServiceClient.Client) {
     ServiceClient = ServiceClient.Client;
   }
-  var writeCb = function(buf, seqid) {
-    connection.write(buf,seqid);
+  var writeCb = function (buf, seqid) {
+    connection.write(buf, seqid);
   };
   var transport = new connection.transport(undefined, writeCb);
-  var protocolWrapper = new Wrapper(serviceName, connection.protocol, connection);
+  var protocolWrapper = new Wrapper(
+    serviceName,
+    connection.protocol,
+    connection,
+  );
   var client = new ServiceClient(transport, protocolWrapper);
   var self = this;
-  client.new_seqid = function() {
+  client.new_seqid = function () {
     self.seqid += 1;
     return self.seqid;
   };
 
-  if (typeof connection.client !== 'object') {
+  if (typeof connection.client !== "object") {
     connection.client = {};
   }
   connection.client[serviceName] = client;
diff --git a/lib/nodejs/lib/thrift/ohos_connection.js b/lib/nodejs/lib/thrift/ohos_connection.js
index 95bf122..34afaae 100644
--- a/lib/nodejs/lib/thrift/ohos_connection.js
+++ b/lib/nodejs/lib/thrift/ohos_connection.js
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
-var EventEmitter = require('events').EventEmitter;
-var thrift = require('./thrift');
+var util = require("util");
+var EventEmitter = require("events").EventEmitter;
+var thrift = require("./thrift");
 
-var TBufferedTransport = require('./buffered_transport');
-var TBinaryProtocol = require('./binary_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var TBufferedTransport = require("./buffered_transport");
+var TBinaryProtocol = require("./binary_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
-var createClient = require('./create_client');
+var createClient = require("./create_client");
 
 /**
  * @class
@@ -69,7 +69,7 @@
  *     semantics implemented over the OpenHarmonyOS http.request() method.
  * @see {@link createOhosConnection}
  */
-var OhosConnection = exports.OhosConnection = function(options) {
+var OhosConnection = (exports.OhosConnection = function (options) {
   //Initialize the emitter base object
   EventEmitter.call(this);
 
@@ -78,12 +78,12 @@
   this.options = options || {};
   this.host = this.options.host;
   this.port = this.options.port;
-  this.path = this.options.path || '/';
+  this.path = this.options.path || "/";
   //OpenHarmonyOS needs URL for initiating an HTTP request.
   this.url =
     this.port === 80
-      ? this.host.replace(/\/$/, '') + this.path
-      : this.host.replace(/\/$/, '') + ':' + this.port + this.path;
+      ? this.host.replace(/\/$/, "") + this.path
+      : this.host.replace(/\/$/, "") + ":" + this.port + this.path;
   this.transport = this.options.transport || TBufferedTransport;
   this.protocol = this.options.protocol || TBinaryProtocol;
   //Inherit method from OpenHarmonyOS HTTP module
@@ -91,17 +91,17 @@
 
   //Prepare HTTP request options
   this.requestOptions = {
-    method: 'POST',
+    method: "POST",
     header: this.options.header || {},
     readTimeout: this.options.readTimeout || 60000,
-    connectTimeout: this.options.connectTimeout || 60000
+    connectTimeout: this.options.connectTimeout || 60000,
   };
   for (var attrname in this.options.requestOptions) {
     this.requestOptions[attrname] = this.options.requestOptions[attrname];
   }
   /*jshint -W069 */
-  if (!this.requestOptions.header['Connection']) {
-    this.requestOptions.header['Connection'] = 'keep-alive';
+  if (!this.requestOptions.header["Connection"]) {
+    this.requestOptions.header["Connection"] = "keep-alive";
   }
   /*jshint +W069 */
 
@@ -134,60 +134,61 @@
           delete self.seqId2Service[header.rseqid];
         }
         /*jshint -W083 */
-        client._reqs[dummy_seqid] = function(err, success){
+        client._reqs[dummy_seqid] = function (err, success) {
           transport_with_data.commitPosition();
           var clientCallback = client._reqs[header.rseqid];
           delete client._reqs[header.rseqid];
           if (clientCallback) {
-            process.nextTick(function() {
+            process.nextTick(function () {
               clientCallback(err, success);
             });
           }
         };
         /*jshint +W083 */
-        if(client['recv_' + header.fname]) {
-          client['recv_' + header.fname](proto, header.mtype, dummy_seqid);
+        if (client["recv_" + header.fname]) {
+          client["recv_" + header.fname](proto, header.mtype, dummy_seqid);
         } else {
           delete client._reqs[dummy_seqid];
-          self.emit("error",
-                    new thrift.TApplicationException(
-                       thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
-                       "Received a response to an unknown RPC function"));
+          self.emit(
+            "error",
+            new thrift.TApplicationException(
+              thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
+              "Received a response to an unknown RPC function",
+            ),
+          );
         }
       }
-    }
-    catch (e) {
+    } catch (e) {
       if (e instanceof InputBufferUnderrunError) {
         transport_with_data.rollbackPosition();
       } else {
-        self.emit('error', e);
+        self.emit("error", e);
       }
     }
   }
 
-
   //Response handler
   //////////////////////////////////////////////////
-  this.responseCallback = function(error, response) {
+  this.responseCallback = function (error, response) {
     //Response will be a struct like:
     // https://developer.harmonyos.com/en/docs/documentation/doc-references/js-apis-net-http-0000001168304341#section15920192914312
     var data = [];
     var dataLen = 0;
 
     if (error) {
-      self.emit('error', error);
+      self.emit("error", error);
       return;
     }
 
     if (!response || response.responseCode !== 200) {
-      self.emit('error', new THTTPException(response));
+      self.emit("error", new THTTPException(response));
     }
 
     // With OpenHarmonyOS running in a Browser (e.g. Browserify), chunk
     // will be a string or an ArrayBuffer.
     if (
-      typeof response.result == 'string' ||
-      Object.prototype.toString.call(response.result) == '[object Uint8Array]'
+      typeof response.result == "string" ||
+      Object.prototype.toString.call(response.result) == "[object Uint8Array]"
     ) {
       // Wrap ArrayBuffer/string in a Buffer so data[i].copy will work
       data.push(Buffer.from(response.result));
@@ -211,7 +212,7 @@
    * @event {error} the "error" event is raised upon request failure passing the
    *     Node.js error object to the listener.
    */
-  this.write = function(data) {
+  this.write = function (data) {
     //To initiate multiple HTTP requests, we must create an HttpRequest object
     // for each HTTP request
     var http = self.createHttp();
@@ -223,7 +224,7 @@
     opts.extraData = data.toString();
     http.request(self.url, opts, self.responseCallback);
   };
-};
+});
 util.inherits(OhosConnection, EventEmitter);
 
 /**
@@ -236,7 +237,7 @@
  * @returns {OhosConnection} The connection object.
  * @see {@link ConnectOptions}
  */
-exports.createOhosConnection = function(createHttp, host, port, options) {
+exports.createOhosConnection = function (createHttp, host, port, options) {
   options.createHttp = createHttp;
   options.host = host;
   options.port = port || 80;
@@ -256,6 +257,6 @@
   this.response = response;
   this.type = thrift.TApplicationExceptionType.PROTOCOL_ERROR;
   this.message =
-    'Received a response with a bad HTTP status code: ' + response.responseCode;
+    "Received a response with a bad HTTP status code: " + response.responseCode;
 }
 util.inherits(THTTPException, thrift.TApplicationException);
diff --git a/lib/nodejs/lib/thrift/protocol.js b/lib/nodejs/lib/thrift/protocol.js
index a70ebe2..6eb88da 100644
--- a/lib/nodejs/lib/thrift/protocol.js
+++ b/lib/nodejs/lib/thrift/protocol.js
@@ -17,6 +17,6 @@
  * under the License.
  */
 
-module.exports.TBinaryProtocol = require('./binary_protocol');
-module.exports.TCompactProtocol = require('./compact_protocol');
-module.exports.TJSONProtocol = require('./json_protocol');
+module.exports.TBinaryProtocol = require("./binary_protocol");
+module.exports.TCompactProtocol = require("./compact_protocol");
+module.exports.TJSONProtocol = require("./json_protocol");
diff --git a/lib/nodejs/lib/thrift/server.js b/lib/nodejs/lib/thrift/server.js
index 16b74ea..80a369f 100644
--- a/lib/nodejs/lib/thrift/server.js
+++ b/lib/nodejs/lib/thrift/server.js
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-var constants = require('constants');
-var net = require('net');
-var tls = require('tls');
+var constants = require("constants");
+var net = require("net");
+var tls = require("tls");
 
-var TBufferedTransport = require('./buffered_transport');
-var TBinaryProtocol = require('./binary_protocol');
-var THeaderProtocol = require('./header_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var TBufferedTransport = require("./buffered_transport");
+var TBinaryProtocol = require("./binary_protocol");
+var THeaderProtocol = require("./header_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
 /**
  * Create a Thrift server which can serve one or multiple services.
@@ -33,75 +33,82 @@
  * @param {ServerOptions} options - Optional additional server configuration.
  * @returns {object} - The Apache Thrift Multiplex Server.
  */
-exports.createMultiplexServer = function(processor, options) {
-  var transport = (options && options.transport) ? options.transport : TBufferedTransport;
-  var protocol = (options && options.protocol) ? options.protocol : TBinaryProtocol;
+exports.createMultiplexServer = function (processor, options) {
+  var transport =
+    options && options.transport ? options.transport : TBufferedTransport;
+  var protocol =
+    options && options.protocol ? options.protocol : TBinaryProtocol;
 
   function serverImpl(stream) {
     var self = this;
-    stream.on('error', function(err) {
-        self.emit('error', err);
+    stream.on("error", function (err) {
+      self.emit("error", err);
     });
-    stream.on('data', transport.receiver(function(transportWithData) {
-      var input = new protocol(transportWithData);
-      var outputCb = function(buf) {
-        try {
+    stream.on(
+      "data",
+      transport.receiver(function (transportWithData) {
+        var input = new protocol(transportWithData);
+        var outputCb = function (buf) {
+          try {
             stream.write(buf);
-        } catch (err) {
-            self.emit('error', err);
+          } catch (err) {
+            self.emit("error", err);
             stream.end();
-        }
-      };
+          }
+        };
 
-      var output = new protocol(new transport(undefined, outputCb));
-      // Read and write need to be performed on the same transport
-      // for THeaderProtocol because we should only respond with
-      // headers if the request contains headers
-      if (protocol === THeaderProtocol) {
-        output = input;
-        output.trans.onFlush = outputCb;
-      }
+        var output = new protocol(new transport(undefined, outputCb));
+        // Read and write need to be performed on the same transport
+        // for THeaderProtocol because we should only respond with
+        // headers if the request contains headers
+        if (protocol === THeaderProtocol) {
+          output = input;
+          output.trans.onFlush = outputCb;
+        }
 
-      try {
-        do {
-          processor.process(input, output);
-          transportWithData.commitPosition();
-        } while (true);
-      } catch (err) {
-        if (err instanceof InputBufferUnderrunError) {
-          //The last data in the buffer was not a complete message, wait for the rest
-          transportWithData.rollbackPosition();
+        try {
+          do {
+            processor.process(input, output);
+            transportWithData.commitPosition();
+          } while (true);
+        } catch (err) {
+          if (err instanceof InputBufferUnderrunError) {
+            //The last data in the buffer was not a complete message, wait for the rest
+            transportWithData.rollbackPosition();
+          } else if (err.message === "Invalid type: undefined") {
+            //No more data in the buffer
+            //This trap is a bit hackish
+            //The next step to improve the node behavior here is to have
+            //  the compiler generated process method throw a more explicit
+            //  error when the network buffer is empty (regardles of the
+            //  protocol/transport stack in use) and replace this heuristic.
+            //  Also transports should probably not force upper layers to
+            //  manage their buffer positions (i.e. rollbackPosition() and
+            //  commitPosition() should be eliminated in lieu of a transport
+            //  encapsulated buffer management strategy.)
+            transportWithData.rollbackPosition();
+          } else {
+            //Unexpected error
+            self.emit("error", err);
+            stream.end();
+          }
         }
-        else if (err.message === "Invalid type: undefined") {
-          //No more data in the buffer
-          //This trap is a bit hackish
-          //The next step to improve the node behavior here is to have
-          //  the compiler generated process method throw a more explicit
-          //  error when the network buffer is empty (regardles of the
-          //  protocol/transport stack in use) and replace this heuristic.
-          //  Also transports should probably not force upper layers to
-          //  manage their buffer positions (i.e. rollbackPosition() and
-          //  commitPosition() should be eliminated in lieu of a transport
-          //  encapsulated buffer management strategy.)
-          transportWithData.rollbackPosition();
-        }
-        else {
-          //Unexpected error
-          self.emit('error', err);
-          stream.end();
-        }
-      }
-    }));
+      }),
+    );
 
-    stream.on('end', function() {
+    stream.on("end", function () {
       stream.end();
     });
   }
 
   if (options && options.tls) {
-    if (!('secureProtocol' in options.tls) && !('secureOptions' in options.tls)) {
+    if (
+      !("secureProtocol" in options.tls) &&
+      !("secureOptions" in options.tls)
+    ) {
       options.tls.secureProtocol = "SSLv23_method";
-      options.tls.secureOptions = constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3;
+      options.tls.secureOptions =
+        constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3;
     }
     return tls.createServer(options.tls, serverImpl);
   } else {
@@ -115,7 +122,7 @@
  * @param {ServerOptions} options - Optional additional server configuration.
  * @returns {object} - The Apache Thrift Multiplex Server.
  */
-exports.createServer = function(processor, handler, options) {
+exports.createServer = function (processor, handler, options) {
   if (processor.Processor) {
     processor = processor.Processor;
   }
diff --git a/lib/nodejs/lib/thrift/thrift.js b/lib/nodejs/lib/thrift/thrift.js
index 3a693f6..741a493 100644
--- a/lib/nodejs/lib/thrift/thrift.js
+++ b/lib/nodejs/lib/thrift/thrift.js
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
+var util = require("util");
 
-var Type = exports.Type = {
+var Type = (exports.Type = {
   STOP: 0,
   VOID: 1,
   BOOL: 2,
@@ -35,14 +35,14 @@
   SET: 14,
   LIST: 15,
   UTF8: 16,
-  UTF16: 17
-};
+  UTF16: 17,
+});
 
 exports.MessageType = {
   CALL: 1,
   REPLY: 2,
   EXCEPTION: 3,
-  ONEWAY: 4
+  ONEWAY: 4,
 };
 
 exports.TException = TException;
@@ -55,10 +55,10 @@
 
   this.name = this.constructor.name;
   this.message = message;
-};
+}
 util.inherits(TException, Error);
 
-var TApplicationExceptionType = exports.TApplicationExceptionType = {
+var TApplicationExceptionType = (exports.TApplicationExceptionType = {
   UNKNOWN: 0,
   UNKNOWN_METHOD: 1,
   INVALID_MESSAGE_TYPE: 2,
@@ -69,8 +69,8 @@
   PROTOCOL_ERROR: 7,
   INVALID_TRANSFORM: 8,
   INVALID_PROTOCOL: 9,
-  UNSUPPORTED_CLIENT_TYPE: 10
-};
+  UNSUPPORTED_CLIENT_TYPE: 10,
+});
 
 exports.TApplicationException = TApplicationException;
 
@@ -83,73 +83,73 @@
   this.type = type || TApplicationExceptionType.UNKNOWN;
   this.name = this.constructor.name;
   this.message = message;
-};
+}
 util.inherits(TApplicationException, TException);
 
-TApplicationException.prototype[Symbol.for("read")] = TApplicationException.prototype.read = function(input) {
-  var ftype;
-  var ret = input.readStructBegin('TApplicationException');
+TApplicationException.prototype[Symbol.for("read")] =
+  TApplicationException.prototype.read = function (input) {
+    var ftype;
+    var ret = input.readStructBegin("TApplicationException");
 
-  while(1){
+    while (1) {
       ret = input.readFieldBegin();
-      if(ret.ftype == Type.STOP)
-          break;
+      if (ret.ftype == Type.STOP) break;
 
-      switch(ret.fid){
-          case 1:
-              if( ret.ftype == Type.STRING ){
-                  ret = input.readString();
-                  this.message = ret;
-              } else {
-                  ret = input.skip(ret.ftype);
-              }
-              break;
-          case 2:
-              if( ret.ftype == Type.I32 ){
-                  ret = input.readI32();
-                  this.type = ret;
-              } else {
-                  ret   = input.skip(ret.ftype);
-              }
-              break;
-          default:
-              ret = input.skip(ret.ftype);
-              break;
+      switch (ret.fid) {
+        case 1:
+          if (ret.ftype == Type.STRING) {
+            ret = input.readString();
+            this.message = ret;
+          } else {
+            ret = input.skip(ret.ftype);
+          }
+          break;
+        case 2:
+          if (ret.ftype == Type.I32) {
+            ret = input.readI32();
+            this.type = ret;
+          } else {
+            ret = input.skip(ret.ftype);
+          }
+          break;
+        default:
+          ret = input.skip(ret.ftype);
+          break;
       }
       input.readFieldEnd();
-  }
-  input.readStructEnd();
-};
+    }
+    input.readStructEnd();
+  };
 
-TApplicationException.prototype[Symbol.for("write")] = TApplicationException.prototype.write = function(output){
-  output.writeStructBegin('TApplicationException');
+TApplicationException.prototype[Symbol.for("write")] =
+  TApplicationException.prototype.write = function (output) {
+    output.writeStructBegin("TApplicationException");
 
-  if (this.message) {
-      output.writeFieldBegin('message', Type.STRING, 1);
+    if (this.message) {
+      output.writeFieldBegin("message", Type.STRING, 1);
       output.writeString(this.message);
       output.writeFieldEnd();
-  }
+    }
 
-  if (this.code) {
-      output.writeFieldBegin('type', Type.I32, 2);
+    if (this.code) {
+      output.writeFieldBegin("type", Type.I32, 2);
       output.writeI32(this.code);
       output.writeFieldEnd();
-  }
+    }
 
-  output.writeFieldStop();
-  output.writeStructEnd();
-};
+    output.writeFieldStop();
+    output.writeStructEnd();
+  };
 
-var TProtocolExceptionType = exports.TProtocolExceptionType = {
+var TProtocolExceptionType = (exports.TProtocolExceptionType = {
   UNKNOWN: 0,
   INVALID_DATA: 1,
   NEGATIVE_SIZE: 2,
   SIZE_LIMIT: 3,
   BAD_VERSION: 4,
   NOT_IMPLEMENTED: 5,
-  DEPTH_LIMIT: 6
-};
-
+  DEPTH_LIMIT: 6,
+});
 
 exports.TProtocolException = TProtocolException;
 
@@ -162,74 +162,74 @@
   this.name = this.constructor.name;
   this.type = type;
   this.message = message;
-};
+}
 util.inherits(TProtocolException, Error);
 
-exports.objectLength = function(obj) {
+exports.objectLength = function (obj) {
   return Object.keys(obj).length;
 };
 
-exports.inherits = function(constructor, superConstructor) {
+exports.inherits = function (constructor, superConstructor) {
   util.inherits(constructor, superConstructor);
 };
 
 var copyList, copyMap;
 
-copyList = function(lst, types) {
-
-  if (!lst) {return lst; }
+copyList = function (lst, types) {
+  if (!lst) {
+    return lst;
+  }
 
   var type;
 
   if (types.shift === undefined) {
     type = types;
-  }
-  else {
+  } else {
     type = types[0];
   }
   var Type = type;
 
-  var len = lst.length, result = [], i, val;
+  var len = lst.length,
+    result = [],
+    i,
+    val;
   for (i = 0; i < len; i++) {
     val = lst[i];
     if (type === null) {
       result.push(val);
-    }
-    else if (type === copyMap || type === copyList) {
+    } else if (type === copyMap || type === copyList) {
       result.push(type(val, types.slice(1)));
-    }
-    else {
+    } else {
       result.push(new Type(val));
     }
   }
   return result;
 };
 
-copyMap = function(obj, types){
-
-  if (!obj) {return obj; }
+copyMap = function (obj, types) {
+  if (!obj) {
+    return obj;
+  }
 
   var type;
 
   if (types.shift === undefined) {
     type = types;
-  }
-  else {
+  } else {
     type = types[0];
   }
   var Type = type;
 
-  var result = {}, val;
-  for(var prop in obj) {
-    if(obj.hasOwnProperty(prop)) {
+  var result = {},
+    val;
+  for (var prop in obj) {
+    if (obj.hasOwnProperty(prop)) {
       val = obj[prop];
       if (type === null) {
         result[prop] = val;
-      }
-      else if (type === copyMap || type === copyList) {
+      } else if (type === copyMap || type === copyList) {
         result[prop] = type(val, types.slice(1));
-      }
-      else {
+      } else {
         result[prop] = new Type(val);
       }
     }
diff --git a/lib/nodejs/lib/thrift/transport.js b/lib/nodejs/lib/thrift/transport.js
index 59daa98..b3ba394 100644
--- a/lib/nodejs/lib/thrift/transport.js
+++ b/lib/nodejs/lib/thrift/transport.js
@@ -17,6 +17,6 @@
  * under the License.
  */
 
-module.exports.TBufferedTransport = require('./buffered_transport');
-module.exports.TFramedTransport = require('./framed_transport');
-module.exports.InputBufferUnderrunError = require('./input_buffer_underrun_error');
+module.exports.TBufferedTransport = require("./buffered_transport");
+module.exports.TFramedTransport = require("./framed_transport");
+module.exports.InputBufferUnderrunError = require("./input_buffer_underrun_error");
diff --git a/lib/nodejs/lib/thrift/web_server.js b/lib/nodejs/lib/thrift/web_server.js
index a33f47a..f49f654 100644
--- a/lib/nodejs/lib/thrift/web_server.js
+++ b/lib/nodejs/lib/thrift/web_server.js
@@ -16,19 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var http = require('http');
-var https = require('https');
+var http = require("http");
+var https = require("https");
 var url = require("url");
 var path = require("path");
 var fs = require("fs");
 var crypto = require("crypto");
-var log = require('./log');
+var log = require("./log");
 
-var MultiplexedProcessor = require('./multiplexed_processor').MultiplexedProcessor;
+var MultiplexedProcessor =
+  require("./multiplexed_processor").MultiplexedProcessor;
 
-var TBufferedTransport = require('./buffered_transport');
-var TBinaryProtocol = require('./binary_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var TBufferedTransport = require("./buffered_transport");
+var TBinaryProtocol = require("./binary_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
 // WSFrame constructor and prototype
 /////////////////////////////////////////////////////////////////////
@@ -82,36 +83,43 @@
    * @param {Boolean} binEncoding - True for binary encoding, false for text encoding
    * @returns {Buffer} - The WebSocket frame, ready to send
    */
-  encode: function(data, mask, binEncoding) {
-      var frame = new Buffer(wsFrame.frameSizeFromData(data, mask));
-      //Byte 0 - FIN & OPCODE
-      frame[0] = wsFrame.fin.FIN +
-          (binEncoding ? wsFrame.frameOpCodes.BIN : wsFrame.frameOpCodes.TEXT);
-      //Byte 1 or 1-3 or 1-9 - MASK FLAG & SIZE
-      var payloadOffset = 2;
-      if (data.length < 0x7E) {
-        frame[1] = data.length + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT);
-      } else if (data.length < 0xFFFF) {
-        frame[1] = 0x7E + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT);
-        frame.writeUInt16BE(data.length, 2, true);
-        payloadOffset = 4;
-      } else {
-        frame[1] = 0x7F + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT);
-        frame.writeUInt32BE(0, 2, true);
-        frame.writeUInt32BE(data.length, 6, true);
-        payloadOffset = 10;
-      }
-      //MASK
-      if (mask) {
-        mask.copy(frame, payloadOffset, 0, 4);
-        payloadOffset += 4;
-      }
-      //Payload
-      data.copy(frame, payloadOffset);
-      if (mask) {
-        wsFrame.applyMask(frame.slice(payloadOffset), frame.slice(payloadOffset-4,payloadOffset));
-      }
-      return frame;
+  encode: function (data, mask, binEncoding) {
+    var frame = new Buffer(wsFrame.frameSizeFromData(data, mask));
+    //Byte 0 - FIN & OPCODE
+    frame[0] =
+      wsFrame.fin.FIN +
+      (binEncoding ? wsFrame.frameOpCodes.BIN : wsFrame.frameOpCodes.TEXT);
+    //Byte 1 or 1-3 or 1-9 - MASK FLAG & SIZE
+    var payloadOffset = 2;
+    if (data.length < 0x7e) {
+      frame[1] =
+        data.length + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT);
+    } else if (data.length < 0xffff) {
+      frame[1] =
+        0x7e + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT);
+      frame.writeUInt16BE(data.length, 2, true);
+      payloadOffset = 4;
+    } else {
+      frame[1] =
+        0x7f + (mask ? wsFrame.mask.TO_SERVER : wsFrame.mask.TO_CLIENT);
+      frame.writeUInt32BE(0, 2, true);
+      frame.writeUInt32BE(data.length, 6, true);
+      payloadOffset = 10;
+    }
+    //MASK
+    if (mask) {
+      mask.copy(frame, payloadOffset, 0, 4);
+      payloadOffset += 4;
+    }
+    //Payload
+    data.copy(frame, payloadOffset);
+    if (mask) {
+      wsFrame.applyMask(
+        frame.slice(payloadOffset),
+        frame.slice(payloadOffset - 4, payloadOffset),
+      );
+    }
+    return frame;
   },
 
   /**
@@ -127,7 +135,7 @@
    * @property {Boolean} FIN - True is the message is complete
    */
 
-   /** Decodes a WebSocket frame
+  /** Decodes a WebSocket frame
    *
    * @param {Buffer} frame - The raw inbound frame, if this is a continuation
    *                         frame it must have a mask property with the mask.
@@ -135,54 +143,55 @@
    *
    * @see {@link WSDecodeResult}
    */
-  decode: function(frame) {
-      var result = {
-        data: null,
-        mask: null,
-        binEncoding: false,
-        nextFrame: null,
-        FIN: true
-      };
+  decode: function (frame) {
+    var result = {
+      data: null,
+      mask: null,
+      binEncoding: false,
+      nextFrame: null,
+      FIN: true,
+    };
 
-      //Byte 0 - FIN & OPCODE
-      if (wsFrame.fin.FIN != (frame[0] & wsFrame.fin.FIN)) {
-        result.FIN = false;
-      }
-      result.binEncoding = (wsFrame.frameOpCodes.BIN == (frame[0] & wsFrame.frameOpCodes.BIN));
-      //Byte 1 or 1-3 or 1-9 - SIZE
-      var lenByte = (frame[1] & 0x0000007F);
-      var len = lenByte;
-      var dataOffset = 2;
-      if (lenByte == 0x7E) {
-        len = frame.readUInt16BE(2);
-        dataOffset = 4;
-      } else if (lenByte == 0x7F) {
-        len = frame.readUInt32BE(6);
-        dataOffset = 10;
-      }
-      //MASK
-      if (wsFrame.mask.TO_SERVER == (frame[1] & wsFrame.mask.TO_SERVER)) {
-        result.mask = new Buffer(4);
-        frame.copy(result.mask, 0, dataOffset, dataOffset + 4);
-        dataOffset += 4;
-      }
-      //Payload
-      result.data = new Buffer(len);
-      frame.copy(result.data, 0, dataOffset, dataOffset+len);
-      if (result.mask) {
-        wsFrame.applyMask(result.data, result.mask);
-      }
-      //Next Frame
-      if (frame.length > dataOffset+len) {
-        result.nextFrame = new Buffer(frame.length - (dataOffset+len));
-        frame.copy(result.nextFrame, 0, dataOffset+len, frame.length);
-      }
-      //Don't forward control frames
-      if (frame[0] & wsFrame.frameOpCodes.FINCTRL) {
-        result.data = null;
-      }
+    //Byte 0 - FIN & OPCODE
+    if (wsFrame.fin.FIN != (frame[0] & wsFrame.fin.FIN)) {
+      result.FIN = false;
+    }
+    result.binEncoding =
+      wsFrame.frameOpCodes.BIN == (frame[0] & wsFrame.frameOpCodes.BIN);
+    //Byte 1 or 1-3 or 1-9 - SIZE
+    var lenByte = frame[1] & 0x0000007f;
+    var len = lenByte;
+    var dataOffset = 2;
+    if (lenByte == 0x7e) {
+      len = frame.readUInt16BE(2);
+      dataOffset = 4;
+    } else if (lenByte == 0x7f) {
+      len = frame.readUInt32BE(6);
+      dataOffset = 10;
+    }
+    //MASK
+    if (wsFrame.mask.TO_SERVER == (frame[1] & wsFrame.mask.TO_SERVER)) {
+      result.mask = new Buffer(4);
+      frame.copy(result.mask, 0, dataOffset, dataOffset + 4);
+      dataOffset += 4;
+    }
+    //Payload
+    result.data = new Buffer(len);
+    frame.copy(result.data, 0, dataOffset, dataOffset + len);
+    if (result.mask) {
+      wsFrame.applyMask(result.data, result.mask);
+    }
+    //Next Frame
+    if (frame.length > dataOffset + len) {
+      result.nextFrame = new Buffer(frame.length - (dataOffset + len));
+      frame.copy(result.nextFrame, 0, dataOffset + len, frame.length);
+    }
+    //Don't forward control frames
+    if (frame[0] & wsFrame.frameOpCodes.FINCTRL) {
+      result.data = null;
+    }
 
-      return result;
+    return result;
   },
 
   /** Masks/Unmasks data
@@ -190,12 +199,12 @@
    * @param {Buffer} data - data to mask/unmask in place
    * @param {Buffer} mask - the mask
    */
-  applyMask: function(data, mask){
+  applyMask: function (data, mask) {
     //TODO: look into xoring words at a time
     var dataLen = data.length;
     var maskLen = mask.length;
     for (var i = 0; i < dataLen; i++) {
-      data[i] = data[i] ^ mask[i%maskLen];
+      data[i] = data[i] ^ mask[i % maskLen];
     }
   },
 
@@ -204,35 +213,34 @@
    * @param {Buffer} data - data.length is the assumed payload size
    * @param {Boolean} mask - true if a mask will be sent (TO_SERVER)
    */
-  frameSizeFromData: function(data, mask) {
+  frameSizeFromData: function (data, mask) {
     var headerSize = 10;
-    if (data.length < 0x7E) {
+    if (data.length < 0x7e) {
       headerSize = 2;
-    } else if (data.length < 0xFFFF) {
+    } else if (data.length < 0xffff) {
       headerSize = 4;
     }
     return headerSize + data.length + (mask ? 4 : 0);
   },
 
   frameOpCodes: {
-    CONT:     0x00,
-    TEXT:     0x01,
-    BIN:      0x02,
-    CTRL:     0x80
+    CONT: 0x00,
+    TEXT: 0x01,
+    BIN: 0x02,
+    CTRL: 0x80,
   },
 
   mask: {
     TO_SERVER: 0x80,
-    TO_CLIENT: 0x00
+    TO_CLIENT: 0x00,
   },
 
   fin: {
     CONT: 0x00,
-    FIN: 0x80
-  }
+    FIN: 0x80,
+  },
 };
 
-
 // createWebServer constructor and options
 /////////////////////////////////////////////////////////////////////
 
@@ -272,20 +280,20 @@
  * @param {ServerOptions} options - The server configuration.
  * @returns {object} - The Apache Thrift Web Server.
  */
-exports.createWebServer = function(options) {
+exports.createWebServer = function (options) {
   var baseDir = options.files;
   var contentTypesByExtension = {
-    '.txt': 'text/plain',
-    '.html': 'text/html',
-    '.css': 'text/css',
-    '.xml': 'application/xml',
-    '.json': 'application/json',
-    '.js': 'application/javascript',
-    '.jpg': 'image/jpeg',
-    '.jpeg': 'image/jpeg',
-    '.gif': 'image/gif',
-    '.png': 'image/png',
-    '.svg': 'image/svg+xml'
+    ".txt": "text/plain",
+    ".html": "text/html",
+    ".css": "text/css",
+    ".xml": "application/xml",
+    ".json": "application/json",
+    ".js": "application/javascript",
+    ".jpg": "image/jpeg",
+    ".jpeg": "image/jpeg",
+    ".gif": "image/gif",
+    ".png": "image/png",
+    ".svg": "image/svg+xml",
   };
 
   //Setup all of the services
@@ -302,8 +310,9 @@
       //  IDL Compiler generated class housing the processor. Also, the options property
       //  for a Processor has been called both cls and processor at different times. We
       //  support any of the four possibilities here.
-      var processor = (svcObj.processor) ? (svcObj.processor.Processor || svcObj.processor) :
-                                           (svcObj.cls.Processor || svcObj.cls);
+      var processor = svcObj.processor
+        ? svcObj.processor.Processor || svcObj.processor
+        : svcObj.cls.Processor || svcObj.cls;
       //Processors can be supplied as constructed objects with handlers already embedded,
       //  if a handler is provided we construct a new processor, if not we use the processor
       //  object directly
@@ -322,9 +331,18 @@
     if (request.headers.origin && options.cors) {
       if (options.cors["*"] || options.cors[request.headers.origin]) {
         //Allow, origin allowed
-        response.setHeader("access-control-allow-origin", request.headers.origin);
-        response.setHeader("access-control-allow-methods", "GET, POST, OPTIONS");
-        response.setHeader("access-control-allow-headers", "content-type, accept");
+        response.setHeader(
+          "access-control-allow-origin",
+          request.headers.origin,
+        );
+        response.setHeader(
+          "access-control-allow-methods",
+          "GET, POST, OPTIONS",
+        );
+        response.setHeader(
+          "access-control-allow-headers",
+          "content-type, accept",
+        );
         response.setHeader("access-control-max-age", "60");
         return true;
       } else {
@@ -336,19 +354,21 @@
     return true;
   }
 
-
   //Handle OPTIONS method (CORS)
   ///////////////////////////////////////////////////
   function processOptions(request, response) {
     if (VerifyCORSAndSetHeaders(request, response)) {
-      response.writeHead("204", "No Content", {"content-length": 0});
+      response.writeHead("204", "No Content", { "content-length": 0 });
     } else {
-      response.writeHead("403", "Origin " + request.headers.origin + " not allowed", {});
+      response.writeHead(
+        "403",
+        "Origin " + request.headers.origin + " not allowed",
+        {},
+      );
     }
     response.end();
   }
 
-
   //Handle POST methods (TXHRTransport)
   ///////////////////////////////////////////////////
   function processPost(request, response) {
@@ -363,39 +383,47 @@
 
     //Verify CORS requirements
     if (!VerifyCORSAndSetHeaders(request, response)) {
-      response.writeHead("403", "Origin " + request.headers.origin + " not allowed", {});
+      response.writeHead(
+        "403",
+        "Origin " + request.headers.origin + " not allowed",
+        {},
+      );
       response.end();
       return;
     }
 
     //Process XHR payload
-    request.on('data', svc.transport.receiver(function(transportWithData) {
-      var input = new svc.protocol(transportWithData);
-      var output = new svc.protocol(new svc.transport(undefined, function(buf) {
+    request.on(
+      "data",
+      svc.transport.receiver(function (transportWithData) {
+        var input = new svc.protocol(transportWithData);
+        var output = new svc.protocol(
+          new svc.transport(undefined, function (buf) {
+            try {
+              response.writeHead(200);
+              response.end(buf);
+            } catch (err) {
+              response.writeHead(500);
+              response.end();
+            }
+          }),
+        );
+
         try {
-          response.writeHead(200);
-          response.end(buf);
+          svc.processor.process(input, output);
+          transportWithData.commitPosition();
         } catch (err) {
-          response.writeHead(500);
-          response.end();
+          if (err instanceof InputBufferUnderrunError) {
+            transportWithData.rollbackPosition();
+          } else {
+            response.writeHead(500);
+            response.end();
+          }
         }
-      }));
-
-      try {
-        svc.processor.process(input, output);
-        transportWithData.commitPosition();
-      } catch (err) {
-        if (err instanceof InputBufferUnderrunError) {
-          transportWithData.rollbackPosition();
-        } else {
-          response.writeHead(500);
-          response.end();
-        }
-      }
-    }));
+      }),
+    );
   }
 
-
   //Handle GET methods (Static Page Server)
   ///////////////////////////////////////////////////
   function processGet(request, response) {
@@ -408,7 +436,11 @@
 
     //Verify CORS requirements
     if (!VerifyCORSAndSetHeaders(request, response)) {
-      response.writeHead("403", "Origin " + request.headers.origin + " not allowed", {});
+      response.writeHead(
+        "403",
+        "Origin " + request.headers.origin + " not allowed",
+        {},
+      );
       response.end();
       return;
     }
@@ -424,18 +456,18 @@
       return;
     }
 
-    fs.exists(filename, function(exists) {
-      if(!exists) {
+    fs.exists(filename, function (exists) {
+      if (!exists) {
         response.writeHead(404);
         response.end();
         return;
       }
 
       if (fs.statSync(filename).isDirectory()) {
-        filename += '/index.html';
+        filename += "/index.html";
       }
 
-      fs.readFile(filename, "binary", function(err, file) {
+      fs.readFile(filename, "binary", function (err, file) {
         if (err) {
           response.writeHead(500);
           response.end(err + "\n");
@@ -456,30 +488,29 @@
     });
   }
 
-
   //Handle WebSocket calls (TWebSocketTransport)
   ///////////////////////////////////////////////////
   function processWS(data, socket, svc, binEncoding) {
-    svc.transport.receiver(function(transportWithData) {
+    svc.transport.receiver(function (transportWithData) {
       var input = new svc.protocol(transportWithData);
-      var output = new svc.protocol(new svc.transport(undefined, function(buf) {
-        try {
-          var frame = wsFrame.encode(buf, null, binEncoding);
-          socket.write(frame);
-        } catch (err) {
-          //TODO: Add better error processing
-        }
-      }));
+      var output = new svc.protocol(
+        new svc.transport(undefined, function (buf) {
+          try {
+            var frame = wsFrame.encode(buf, null, binEncoding);
+            socket.write(frame);
+          } catch (err) {
+            //TODO: Add better error processing
+          }
+        }),
+      );
 
       try {
         svc.processor.process(input, output);
         transportWithData.commitPosition();
-      }
-      catch (err) {
+      } catch (err) {
         if (err instanceof InputBufferUnderrunError) {
           transportWithData.rollbackPosition();
-        }
-        else {
+        } else {
           //TODO: Add better error processing
         }
       }
@@ -498,69 +529,83 @@
   //   - GET static files,
   //   - POST XHR Thrift services
   //   - OPTIONS CORS requests
-  server.on('request', function(request, response) {
-    if (request.method === 'POST') {
-      processPost(request, response);
-    } else if (request.method === 'GET') {
-      processGet(request, response);
-    } else if (request.method === 'OPTIONS') {
-      processOptions(request, response);
-    } else {
-      response.writeHead(500);
-      response.end();
-    }
-  }).on('upgrade', function(request, socket, head) {
-    //Lookup service
-    var svc;
-    try {
-      svc = services[Object.keys(services)[0]];
-    } catch(e) {
-      socket.write("HTTP/1.1 403 No Apache Thrift Service available\r\n\r\n");
-      return;
-    }
-    //Perform upgrade
-    var hash = crypto.createHash("sha1");
-    hash.update(request.headers['sec-websocket-key'] + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11");
-    socket.write("HTTP/1.1 101 Switching Protocols\r\n" +
-                   "Upgrade: websocket\r\n" +
-                   "Connection: Upgrade\r\n" +
-                   "Sec-WebSocket-Accept: " + hash.digest("base64") + "\r\n" +
-                   "Sec-WebSocket-Origin: " + request.headers.origin + "\r\n" +
-                   "Sec-WebSocket-Location: ws://" + request.headers.host + request.url + "\r\n" +
-                   "\r\n");
-    //Handle WebSocket traffic
-    var data = null;
-    socket.on('data', function(frame) {
-      try {
-        while (frame) {
-          var result = wsFrame.decode(frame);
-          //Prepend any existing decoded data
-          if (data) {
-            if (result.data) {
-              var newData = new Buffer(data.length + result.data.length);
-              data.copy(newData);
-              result.data.copy(newData, data.length);
-              result.data = newData;
-            } else {
-              result.data = data;
-            }
-            data = null;
-          }
-          //If this completes a message process it
-          if (result.FIN) {
-            processWS(result.data, socket, svc, result.binEncoding);
-          } else {
-            data = result.data;
-          }
-          //Prepare next frame for decoding (if any)
-          frame = result.nextFrame;
-        }
-      } catch(e) {
-        log.error('TWebSocketTransport Exception: ' + e);
-        socket.destroy();
+  server
+    .on("request", function (request, response) {
+      if (request.method === "POST") {
+        processPost(request, response);
+      } else if (request.method === "GET") {
+        processGet(request, response);
+      } else if (request.method === "OPTIONS") {
+        processOptions(request, response);
+      } else {
+        response.writeHead(500);
+        response.end();
       }
+    })
+    .on("upgrade", function (request, socket, head) {
+      //Lookup service
+      var svc;
+      try {
+        svc = services[Object.keys(services)[0]];
+      } catch (e) {
+        socket.write("HTTP/1.1 403 No Apache Thrift Service available\r\n\r\n");
+        return;
+      }
+      //Perform upgrade
+      var hash = crypto.createHash("sha1");
+      hash.update(
+        request.headers["sec-websocket-key"] +
+          "258EAFA5-E914-47DA-95CA-C5AB0DC85B11",
+      );
+      socket.write(
+        "HTTP/1.1 101 Switching Protocols\r\n" +
+          "Upgrade: websocket\r\n" +
+          "Connection: Upgrade\r\n" +
+          "Sec-WebSocket-Accept: " +
+          hash.digest("base64") +
+          "\r\n" +
+          "Sec-WebSocket-Origin: " +
+          request.headers.origin +
+          "\r\n" +
+          "Sec-WebSocket-Location: ws://" +
+          request.headers.host +
+          request.url +
+          "\r\n" +
+          "\r\n",
+      );
+      //Handle WebSocket traffic
+      var data = null;
+      socket.on("data", function (frame) {
+        try {
+          while (frame) {
+            var result = wsFrame.decode(frame);
+            //Prepend any existing decoded data
+            if (data) {
+              if (result.data) {
+                var newData = new Buffer(data.length + result.data.length);
+                data.copy(newData);
+                result.data.copy(newData, data.length);
+                result.data = newData;
+              } else {
+                result.data = data;
+              }
+              data = null;
+            }
+            //If this completes a message process it
+            if (result.FIN) {
+              processWS(result.data, socket, svc, result.binEncoding);
+            } else {
+              data = result.data;
+            }
+            //Prepare next frame for decoding (if any)
+            frame = result.nextFrame;
+          }
+        } catch (e) {
+          log.error("TWebSocketTransport Exception: " + e);
+          socket.destroy();
+        }
+      });
     });
-  });
 
   //Return the server
   return server;
diff --git a/lib/nodejs/lib/thrift/ws_connection.js b/lib/nodejs/lib/thrift/ws_connection.js
index 8ee8f6e..878a572 100644
--- a/lib/nodejs/lib/thrift/ws_connection.js
+++ b/lib/nodejs/lib/thrift/ws_connection.js
@@ -16,17 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
-var WebSocket = require('isomorphic-ws');
+var util = require("util");
+var WebSocket = require("isomorphic-ws");
 var EventEmitter = require("events").EventEmitter;
-var thrift = require('./thrift');
+var thrift = require("./thrift");
 
-var TBufferedTransport = require('./buffered_transport');
-var TJSONProtocol = require('./json_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var TBufferedTransport = require("./buffered_transport");
+var TJSONProtocol = require("./json_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
-var createClient = require('./create_client');
-var jsEnv = require('browser-or-node');
+var createClient = require("./create_client");
+var jsEnv = require("browser-or-node");
 exports.WSConnection = WSConnection;
 
 /**
@@ -95,38 +95,38 @@
   this.wsOptions = {
     host: this.host,
     port: this.port || 80,
-    path: this.options.path || '/',
-    headers: this.options.headers || {}
+    path: this.options.path || "/",
+    headers: this.options.headers || {},
   };
   for (var attrname in this.options.wsOptions) {
     this.wsOptions[attrname] = this.options.wsOptions[attrname];
   }
-};
+}
 util.inherits(WSConnection, EventEmitter);
 
-WSConnection.prototype.__reset = function() {
+WSConnection.prototype.__reset = function () {
   this.socket = null; //The web socket
   this.send_pending = []; //Buffers/Callback pairs waiting to be sent
 };
 
-WSConnection.prototype.__onOpen = function() {
+WSConnection.prototype.__onOpen = function () {
   this.emit("open");
   if (this.send_pending.length > 0) {
     //If the user made calls before the connection was fully
     //open, send them now
-    this.send_pending.forEach(function(data) {
+    this.send_pending.forEach(function (data) {
       this.socket.send(data);
     }, this);
     this.send_pending = [];
   }
 };
 
-WSConnection.prototype.__onClose = function(evt) {
+WSConnection.prototype.__onClose = function (evt) {
   this.emit("close");
   this.__reset();
 };
 
-WSConnection.prototype.__decodeCallback = function(transport_with_data) {
+WSConnection.prototype.__decodeCallback = function (transport_with_data) {
   var proto = new this.protocol(transport_with_data);
   try {
     while (true) {
@@ -151,7 +151,7 @@
         delete this.seqId2Service[header.rseqid];
       }
       /*jshint -W083 */
-      client._reqs[dummy_seqid] = function(err, success) {
+      client._reqs[dummy_seqid] = function (err, success) {
         transport_with_data.commitPosition();
         var clientCallback = client._reqs[header.rseqid];
         delete client._reqs[header.rseqid];
@@ -160,14 +160,17 @@
         }
       };
       /*jshint +W083 */
-      if (client['recv_' + header.fname]) {
-        client['recv_' + header.fname](proto, header.mtype, dummy_seqid);
+      if (client["recv_" + header.fname]) {
+        client["recv_" + header.fname](proto, header.mtype, dummy_seqid);
       } else {
         delete client._reqs[dummy_seqid];
-        this.emit("error",
+        this.emit(
+          "error",
           new thrift.TApplicationException(
             thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
-            "Received a response to an unknown RPC function"));
+            "Received a response to an unknown RPC function",
+          ),
+        );
       }
     }
   } catch (e) {
@@ -179,20 +182,19 @@
   }
 };
 
-WSConnection.prototype.__onData = function(data) {
+WSConnection.prototype.__onData = function (data) {
   if (Object.prototype.toString.call(data) === "[object ArrayBuffer]") {
     data = new Uint8Array(data);
   }
   var buf = new Buffer(data);
   this.transport.receiver(this.__decodeCallback.bind(this))(buf);
-
 };
 
-WSConnection.prototype.__onMessage = function(evt) {
+WSConnection.prototype.__onMessage = function (evt) {
   this.__onData(evt.data);
 };
 
-WSConnection.prototype.__onError = function(evt) {
+WSConnection.prototype.__onError = function (evt) {
   this.emit("error", evt);
   this.socket.close();
 };
@@ -202,14 +204,14 @@
  * @readonly
  * @returns {boolean}
  */
-WSConnection.prototype.isOpen = function() {
+WSConnection.prototype.isOpen = function () {
   return this.socket && this.socket.readyState === this.socket.OPEN;
 };
 
 /**
  * Opens the transport connection
  */
-WSConnection.prototype.open = function() {
+WSConnection.prototype.open = function () {
   //If OPEN/CONNECTING/CLOSING ignore additional opens
   if (this.socket && this.socket.readyState !== this.socket.CLOSED) {
     return;
@@ -220,7 +222,7 @@
   } else {
     this.socket = new WebSocket(this.uri(), "", this.wsOptions);
   }
-  this.socket.binaryType = 'arraybuffer';
+  this.socket.binaryType = "arraybuffer";
   this.socket.onopen = this.__onOpen.bind(this);
   this.socket.onmessage = this.__onMessage.bind(this);
   this.socket.onerror = this.__onError.bind(this);
@@ -230,7 +232,7 @@
 /**
  * Closes the transport connection
  */
-WSConnection.prototype.close = function() {
+WSConnection.prototype.close = function () {
   this.socket.close();
 };
 
@@ -238,19 +240,22 @@
  * Return URI for the connection
  * @returns {string} URI
  */
-WSConnection.prototype.uri = function() {
-  var schema = this.secure ? 'wss' : 'ws';
-  var port = '';
-  var path = this.path || '/';
+WSConnection.prototype.uri = function () {
+  var schema = this.secure ? "wss" : "ws";
+  var port = "";
+  var path = this.path || "/";
   var host = this.host;
 
   // avoid port if default for schema
-  if (this.port && (('wss' === schema && this.port !== 443) ||
-    ('ws' === schema && this.port !== 80))) {
-    port = ':' + this.port;
+  if (
+    this.port &&
+    (("wss" === schema && this.port !== 443) ||
+      ("ws" === schema && this.port !== 80))
+  ) {
+    port = ":" + this.port;
   }
 
-  return schema + '://' + host + port + path;
+  return schema + "://" + host + port + path;
 };
 
 /**
@@ -260,7 +265,7 @@
  * @event {error} the "error" event is raised upon request failure passing the
  *     Node.js error object to the listener.
  */
-WSConnection.prototype.write = function(data) {
+WSConnection.prototype.write = function (data) {
   if (this.isOpen()) {
     //Send data and register a callback to invoke the client callback
     this.socket.send(data);
@@ -279,7 +284,7 @@
  * @returns {WSConnection} The connection object.
  * @see {@link WSConnectOptions}
  */
-exports.createWSConnection = function(host, port, options) {
+exports.createWSConnection = function (host, port, options) {
   return new WSConnection(host, port, options);
 };
 
diff --git a/lib/nodejs/lib/thrift/ws_transport.js b/lib/nodejs/lib/thrift/ws_transport.js
index 4cf62b9..94b6d90 100644
--- a/lib/nodejs/lib/thrift/ws_transport.js
+++ b/lib/nodejs/lib/thrift/ws_transport.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var log = require('./log');
+var log = require("./log");
 
 module.exports = TWebSocketTransport;
 
@@ -33,19 +33,18 @@
  *   var transport = new Thrift.TWebSocketTransport("http://localhost:8585");
  */
 function TWebSocketTransport(url) {
-    this.__reset(url);
-};
+  this.__reset(url);
+}
 
-
-TWebSocketTransport.prototype.__reset = function(url) {
-  this.url = url;             //Where to connect
-  this.socket = null;         //The web socket
-  this.callbacks = [];        //Pending callbacks
-  this.send_pending = [];     //Buffers/Callback pairs waiting to be sent
-  this.send_buf = '';         //Outbound data, immutable until sent
-  this.recv_buf = '';         //Inbound data
-  this.rb_wpos = 0;           //Network write position in receive buffer
-  this.rb_rpos = 0;           //Client read position in receive buffer
+TWebSocketTransport.prototype.__reset = function (url) {
+  this.url = url; //Where to connect
+  this.socket = null; //The web socket
+  this.callbacks = []; //Pending callbacks
+  this.send_pending = []; //Buffers/Callback pairs waiting to be sent
+  this.send_buf = ""; //Outbound data, immutable until sent
+  this.recv_buf = ""; //Inbound data
+  this.rb_wpos = 0; //Network write position in receive buffer
+  this.rb_rpos = 0; //Client read position in receive buffer
 };
 
 /**
@@ -56,58 +55,62 @@
  * @param {object} callback - The client completion callback.
  * @returns {undefined|string} Nothing (undefined)
  */
-TWebSocketTransport.prototype.flush = function(async, callback) {
+TWebSocketTransport.prototype.flush = function (async, callback) {
   var self = this;
   if (this.isOpen()) {
     //Send data and register a callback to invoke the client callback
     this.socket.send(this.send_buf);
-    this.callbacks.push((function() {
-      var clientCallback = callback;
-      return function(msg) {
-        self.setRecvBuffer(msg);
-        clientCallback();
-      };
-    }()));
+    this.callbacks.push(
+      (function () {
+        var clientCallback = callback;
+        return function (msg) {
+          self.setRecvBuffer(msg);
+          clientCallback();
+        };
+      })(),
+    );
   } else {
     //Queue the send to go out __onOpen
     this.send_pending.push({
       buf: this.send_buf,
-      cb:  callback
+      cb: callback,
     });
   }
 };
 
-TWebSocketTransport.prototype.__onOpen = function() {
-   var self = this;
-   if (this.send_pending.length > 0) {
-      //If the user made calls before the connection was fully
-      //open, send them now
-      this.send_pending.forEach(function(elem) {
-         self.socket.send(elem.buf);
-         self.callbacks.push((function() {
-           var clientCallback = elem.cb;
-           return function(msg) {
-              self.setRecvBuffer(msg);
-              clientCallback();
-           };
-         }()));
-      });
-      this.send_pending = [];
-   }
+TWebSocketTransport.prototype.__onOpen = function () {
+  var self = this;
+  if (this.send_pending.length > 0) {
+    //If the user made calls before the connection was fully
+    //open, send them now
+    this.send_pending.forEach(function (elem) {
+      self.socket.send(elem.buf);
+      self.callbacks.push(
+        (function () {
+          var clientCallback = elem.cb;
+          return function (msg) {
+            self.setRecvBuffer(msg);
+            clientCallback();
+          };
+        })(),
+      );
+    });
+    this.send_pending = [];
+  }
 };
 
-TWebSocketTransport.prototype.__onClose = function(evt) {
+TWebSocketTransport.prototype.__onClose = function (evt) {
   this.__reset(this.url);
 };
 
-TWebSocketTransport.prototype.__onMessage = function(evt) {
+TWebSocketTransport.prototype.__onMessage = function (evt) {
   if (this.callbacks.length) {
     this.callbacks.shift()(evt.data);
   }
 };
 
-TWebSocketTransport.prototype.__onError = function(evt) {
-  log.error('websocket: ' + evt.toString());
+TWebSocketTransport.prototype.__onError = function (evt) {
+  log.error("websocket: " + evt.toString());
   this.socket.close();
 };
 
@@ -115,7 +118,7 @@
  * Sets the buffer to use when receiving server responses.
  * @param {string} buf - The buffer to receive server responses.
  */
-TWebSocketTransport.prototype.setRecvBuffer = function(buf) {
+TWebSocketTransport.prototype.setRecvBuffer = function (buf) {
   this.recv_buf = buf;
   this.recv_buf_sz = this.recv_buf.length;
   this.wpos = this.recv_buf.length;
@@ -127,14 +130,14 @@
  * @readonly
  * @returns {boolean}
  */
-TWebSocketTransport.prototype.isOpen = function() {
+TWebSocketTransport.prototype.isOpen = function () {
   return this.socket && this.socket.readyState == this.socket.OPEN;
 };
 
 /**
  * Opens the transport connection
  */
-TWebSocketTransport.prototype.open = function() {
+TWebSocketTransport.prototype.open = function () {
   //If OPEN/CONNECTING/CLOSING ignore additional opens
   if (this.socket && this.socket.readyState != this.socket.CLOSED) {
     return;
@@ -150,7 +153,7 @@
 /**
  * Closes the transport connection
  */
-TWebSocketTransport.prototype.close = function() {
+TWebSocketTransport.prototype.close = function () {
   this.socket.close();
 };
 
@@ -160,11 +163,11 @@
  * @param {number} len - The number of characters to return.
  * @returns {string} Characters sent by the server.
  */
-TWebSocketTransport.prototype.read = function(len) {
+TWebSocketTransport.prototype.read = function (len) {
   var avail = this.wpos - this.rpos;
 
   if (avail === 0) {
-    return '';
+    return "";
   }
 
   var give = len;
@@ -184,7 +187,7 @@
  * Returns the entire response buffer.
  * @returns {string} Characters sent by the server.
  */
-TWebSocketTransport.prototype.readAll = function() {
+TWebSocketTransport.prototype.readAll = function () {
   return this.recv_buf;
 };
 
@@ -192,7 +195,7 @@
  * Sets the send buffer to buf.
  * @param {string} buf - The buffer to send.
  */
-TWebSocketTransport.prototype.write = function(buf) {
+TWebSocketTransport.prototype.write = function (buf) {
   this.send_buf = buf;
 };
 
@@ -201,6 +204,6 @@
  * @readonly
  * @returns {string} The send buffer.
  */
-TWebSocketTransport.prototype.getSendBuffer = function() {
+TWebSocketTransport.prototype.getSendBuffer = function () {
   return this.send_buf;
 };
diff --git a/lib/nodejs/lib/thrift/xhr_connection.js b/lib/nodejs/lib/thrift/xhr_connection.js
index 6459c90..ea542d1 100644
--- a/lib/nodejs/lib/thrift/xhr_connection.js
+++ b/lib/nodejs/lib/thrift/xhr_connection.js
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var util = require('util');
+var util = require("util");
 var EventEmitter = require("events").EventEmitter;
-var thrift = require('./thrift');
+var thrift = require("./thrift");
 
-var TBufferedTransport = require('./buffered_transport');
-var TJSONProtocol = require('./json_protocol');
-var InputBufferUnderrunError = require('./input_buffer_underrun_error');
+var TBufferedTransport = require("./buffered_transport");
+var TJSONProtocol = require("./json_protocol");
+var InputBufferUnderrunError = require("./input_buffer_underrun_error");
 
-var createClient = require('./create_client');
+var createClient = require("./create_client");
 
 exports.XHRConnection = XHRConnection;
 
@@ -43,43 +43,49 @@
   this.options = options || {};
   this.wpos = 0;
   this.rpos = 0;
-  this.useCORS = (options && options.useCORS);
-  this.send_buf = '';
-  this.recv_buf = '';
+  this.useCORS = options && options.useCORS;
+  this.send_buf = "";
+  this.recv_buf = "";
   this.transport = options.transport || TBufferedTransport;
   this.protocol = options.protocol || TJSONProtocol;
   this.headers = options.headers || {};
 
   host = host || window.location.host;
   port = port || window.location.port;
-  var prefix = options.https ? 'https://' : 'http://';
-  var path = options.path || '/';
+  var prefix = options.https ? "https://" : "http://";
+  var path = options.path || "/";
 
-  if (port === '') {
+  if (port === "") {
     port = undefined;
   }
 
-  if (!port || port === 80 || port === '80') {
+  if (!port || port === 80 || port === "80") {
     this.url = prefix + host + path;
   } else {
-    this.url = prefix + host + ':' + port + path;
+    this.url = prefix + host + ":" + port + path;
   }
 
   //The sequence map is used to map seqIDs back to the
   //  calling client in multiplexed scenarios
   this.seqId2Service = {};
-};
+}
 
 util.inherits(XHRConnection, EventEmitter);
 
 /**
-* Gets the browser specific XmlHttpRequest Object.
-* @returns {object} the browser XHR interface object
-*/
-XHRConnection.prototype.getXmlHttpRequestObject = function() {
-  try { return new XMLHttpRequest(); } catch (e1) { }
-  try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e2) { }
-  try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e3) { }
+ * Gets the browser specific XmlHttpRequest Object.
+ * @returns {object} the browser XHR interface object
+ */
+XHRConnection.prototype.getXmlHttpRequestObject = function () {
+  try {
+    return new XMLHttpRequest();
+  } catch (e1) {}
+  try {
+    return new ActiveXObject("Msxml2.XMLHTTP");
+  } catch (e2) {}
+  try {
+    return new ActiveXObject("Microsoft.XMLHTTP");
+  } catch (e3) {}
 
   throw "Your browser doesn't support XHR.";
 };
@@ -94,27 +100,27 @@
  * @returns {undefined|string} Nothing or the current send buffer.
  * @throws {string} If XHR fails.
  */
-XHRConnection.prototype.flush = function() {
+XHRConnection.prototype.flush = function () {
   var self = this;
-  if (this.url === undefined || this.url === '') {
+  if (this.url === undefined || this.url === "") {
     return this.send_buf;
   }
 
   var xreq = this.getXmlHttpRequestObject();
 
   if (xreq.overrideMimeType) {
-    xreq.overrideMimeType('application/json');
+    xreq.overrideMimeType("application/json");
   }
 
-  xreq.onreadystatechange = function() {
+  xreq.onreadystatechange = function () {
     if (this.readyState == 4 && this.status == 200) {
       self.setRecvBuffer(this.responseText);
     }
   };
 
-  xreq.open('POST', this.url, true);
+  xreq.open("POST", this.url, true);
 
-  Object.keys(this.headers).forEach(function(headerKey) {
+  Object.keys(this.headers).forEach(function (headerKey) {
     xreq.setRequestHeader(headerKey, self.headers[headerKey]);
   });
 
@@ -125,7 +131,7 @@
  * Sets the buffer to provide the protocol when deserializing.
  * @param {string} buf - The buffer to supply the protocol.
  */
-XHRConnection.prototype.setRecvBuffer = function(buf) {
+XHRConnection.prototype.setRecvBuffer = function (buf) {
   this.recv_buf = buf;
   this.recv_buf_sz = this.recv_buf.length;
   this.wpos = this.recv_buf.length;
@@ -137,10 +143,9 @@
   var thing = new Buffer(data || buf);
 
   this.transport.receiver(this.__decodeCallback.bind(this))(thing);
-
 };
 
-XHRConnection.prototype.__decodeCallback = function(transport_with_data) {
+XHRConnection.prototype.__decodeCallback = function (transport_with_data) {
   var proto = new this.protocol(transport_with_data);
   try {
     while (true) {
@@ -165,7 +170,7 @@
         delete this.seqId2Service[header.rseqid];
       }
       /*jshint -W083 */
-      client._reqs[dummy_seqid] = function(err, success) {
+      client._reqs[dummy_seqid] = function (err, success) {
         transport_with_data.commitPosition();
         var clientCallback = client._reqs[header.rseqid];
         delete client._reqs[header.rseqid];
@@ -174,14 +179,17 @@
         }
       };
       /*jshint +W083 */
-      if (client['recv_' + header.fname]) {
-        client['recv_' + header.fname](proto, header.mtype, dummy_seqid);
+      if (client["recv_" + header.fname]) {
+        client["recv_" + header.fname](proto, header.mtype, dummy_seqid);
       } else {
         delete client._reqs[dummy_seqid];
-        this.emit("error",
+        this.emit(
+          "error",
           new thrift.TApplicationException(
             thrift.TApplicationExceptionType.WRONG_METHOD_NAME,
-            "Received a response to an unknown RPC function"));
+            "Received a response to an unknown RPC function",
+          ),
+        );
       }
     }
   } catch (e) {
@@ -198,19 +206,19 @@
  * @readonly
  * @returns {boolean} Always True.
  */
-XHRConnection.prototype.isOpen = function() {
+XHRConnection.prototype.isOpen = function () {
   return true;
 };
 
 /**
  * Opens the transport connection, with XHR this is a nop.
  */
-XHRConnection.prototype.open = function() {};
+XHRConnection.prototype.open = function () {};
 
 /**
  * Closes the transport connection, with XHR this is a nop.
  */
-XHRConnection.prototype.close = function() {};
+XHRConnection.prototype.close = function () {};
 
 /**
  * Returns the specified number of characters from the response
@@ -218,11 +226,11 @@
  * @param {number} len - The number of characters to return.
  * @returns {string} Characters sent by the server.
  */
-XHRConnection.prototype.read = function(len) {
+XHRConnection.prototype.read = function (len) {
   var avail = this.wpos - this.rpos;
 
   if (avail === 0) {
-    return '';
+    return "";
   }
 
   var give = len;
@@ -242,7 +250,7 @@
  * Returns the entire response buffer.
  * @returns {string} Characters sent by the server.
  */
-XHRConnection.prototype.readAll = function() {
+XHRConnection.prototype.readAll = function () {
   return this.recv_buf;
 };
 
@@ -250,7 +258,7 @@
  * Sets the send buffer to buf.
  * @param {string} buf - The buffer to send.
  */
-XHRConnection.prototype.write = function(buf) {
+XHRConnection.prototype.write = function (buf) {
   this.send_buf = buf;
   this.flush();
 };
@@ -260,7 +268,7 @@
  * @readonly
  * @returns {string} The send buffer.
  */
-XHRConnection.prototype.getSendBuffer = function() {
+XHRConnection.prototype.getSendBuffer = function () {
   return this.send_buf;
 };
 
@@ -273,7 +281,7 @@
  * @returns {XHRConnection} The connection object.
  * @see {@link XHRConnectOptions}
  */
-exports.createXHRConnection = function(host, port, options) {
+exports.createXHRConnection = function (host, port, options) {
   return new XHRConnection(host, port, options);
 };
 
diff --git a/lib/nodejs/test/binary.test.js b/lib/nodejs/test/binary.test.js
index 187cd18..343d39a 100644
--- a/lib/nodejs/test/binary.test.js
+++ b/lib/nodejs/test/binary.test.js
@@ -21,7 +21,7 @@
 const binary = require("thrift/binary");
 
 const cases = {
-  "Should read signed byte": function(assert) {
+  "Should read signed byte": function (assert) {
     assert.equal(1, binary.readByte(0x01));
     assert.equal(-1, binary.readByte(0xff));
 
@@ -29,12 +29,12 @@
     assert.equal(-128, binary.readByte(0x80));
     assert.end();
   },
-  "Should write byte": function(assert) {
+  "Should write byte": function (assert) {
     //Protocol simply writes to the buffer. Nothing to test.. yet.
     assert.ok(true);
     assert.end();
   },
-  "Should read I16": function(assert) {
+  "Should read I16": function (assert) {
     assert.equal(0, binary.readI16([0x00, 0x00]));
     assert.equal(1, binary.readI16([0x00, 0x01]));
     assert.equal(-1, binary.readI16([0xff, 0xff]));
@@ -46,7 +46,7 @@
     assert.end();
   },
 
-  "Should write I16": function(assert) {
+  "Should write I16": function (assert) {
     assert.deepEqual([0x00, 0x00], binary.writeI16([], 0));
     assert.deepEqual([0x00, 0x01], binary.writeI16([], 1));
     assert.deepEqual([0xff, 0xff], binary.writeI16([], -1));
@@ -58,7 +58,7 @@
     assert.end();
   },
 
-  "Should read I32": function(assert) {
+  "Should read I32": function (assert) {
     assert.equal(0, binary.readI32([0x00, 0x00, 0x00, 0x00]));
     assert.equal(1, binary.readI32([0x00, 0x00, 0x00, 0x01]));
     assert.equal(-1, binary.readI32([0xff, 0xff, 0xff, 0xff]));
@@ -70,7 +70,7 @@
     assert.end();
   },
 
-  "Should write I32": function(assert) {
+  "Should write I32": function (assert) {
     assert.deepEqual([0x00, 0x00, 0x00, 0x00], binary.writeI32([], 0));
     assert.deepEqual([0x00, 0x00, 0x00, 0x01], binary.writeI32([], 1));
     assert.deepEqual([0xff, 0xff, 0xff, 0xff], binary.writeI32([], -1));
@@ -78,137 +78,139 @@
     // Min I32
     assert.deepEqual(
       [0x80, 0x00, 0x00, 0x00],
-      binary.writeI32([], -2147483648)
+      binary.writeI32([], -2147483648),
     );
     // Max I32
     assert.deepEqual([0x7f, 0xff, 0xff, 0xff], binary.writeI32([], 2147483647));
     assert.end();
   },
 
-  "Should read doubles": function(assert) {
+  "Should read doubles": function (assert) {
     assert.equal(
       0,
-      binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
     assert.equal(
       0,
-      binary.readDouble([0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
     assert.equal(
       1,
-      binary.readDouble([0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
     assert.equal(
       2,
-      binary.readDouble([0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
     assert.equal(
       -2,
-      binary.readDouble([0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
 
     assert.equal(
       Math.PI,
-      binary.readDouble([0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18])
+      binary.readDouble([0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18]),
     );
 
     assert.equal(
       Infinity,
-      binary.readDouble([0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
     assert.equal(
       -Infinity,
-      binary.readDouble([0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
 
     assert.ok(
-      isNaN(binary.readDouble([0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
+      isNaN(
+        binary.readDouble([0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
+      ),
     );
 
     assert.equal(
       1 / 3,
-      binary.readDouble([0x3f, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55])
+      binary.readDouble([0x3f, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55]),
     );
 
     // Min subnormal positive double
     assert.equal(
       4.9406564584124654e-324,
-      binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01])
+      binary.readDouble([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01]),
     );
     // Min normal positive double
     assert.equal(
       2.2250738585072014e-308,
-      binary.readDouble([0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
+      binary.readDouble([0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
     );
     // Max positive double
     assert.equal(
       1.7976931348623157e308,
-      binary.readDouble([0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff])
+      binary.readDouble([0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]),
     );
     assert.end();
   },
 
-  "Should write doubles": function(assert) {
+  "Should write doubles": function (assert) {
     assert.deepEqual(
       [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], 0)
+      binary.writeDouble([], 0),
     );
     assert.deepEqual(
       [0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], 1)
+      binary.writeDouble([], 1),
     );
     assert.deepEqual(
       [0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], 2)
+      binary.writeDouble([], 2),
     );
     assert.deepEqual(
       [0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], -2)
+      binary.writeDouble([], -2),
     );
 
     assert.deepEqual(
       [0x40, 0x9, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18],
-      binary.writeDouble([], Math.PI)
+      binary.writeDouble([], Math.PI),
     );
 
     assert.deepEqual(
       [0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], Infinity)
+      binary.writeDouble([], Infinity),
     );
     assert.deepEqual(
       [0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], -Infinity)
+      binary.writeDouble([], -Infinity),
     );
 
     assert.deepEqual(
       [0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], NaN)
+      binary.writeDouble([], NaN),
     );
 
     assert.deepEqual(
       [0x3f, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55],
-      binary.writeDouble([], 1 / 3)
+      binary.writeDouble([], 1 / 3),
     );
 
     // Min subnormal positive double
     assert.deepEqual(
       [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01],
-      binary.writeDouble([], 4.9406564584124654e-324)
+      binary.writeDouble([], 4.9406564584124654e-324),
     );
     // Min normal positive double
     assert.deepEqual(
       [0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
-      binary.writeDouble([], 2.2250738585072014e-308)
+      binary.writeDouble([], 2.2250738585072014e-308),
     );
     // Max positive double
     assert.deepEqual(
       [0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff],
-      binary.writeDouble([], 1.7976931348623157e308)
+      binary.writeDouble([], 1.7976931348623157e308),
     );
     assert.end();
-  }
+  },
 };
 
-Object.keys(cases).forEach(function(caseName) {
+Object.keys(cases).forEach(function (caseName) {
   test(caseName, cases[caseName]);
 });
diff --git a/lib/nodejs/test/client.js b/lib/nodejs/test/client.js
index 31ea06e..1d137ff 100644
--- a/lib/nodejs/test/client.js
+++ b/lib/nodejs/test/client.js
@@ -25,8 +25,8 @@
 
 const ThriftTest = require(`./${helpers.genPath}/ThriftTest`);
 const ThriftTestDriver = require("./test_driver").ThriftTestDriver;
-const ThriftTestDriverPromise = require("./test_driver")
-  .ThriftTestDriverPromise;
+const ThriftTestDriverPromise =
+  require("./test_driver").ThriftTestDriverPromise;
 const SecondService = require(`./${helpers.genPath}/SecondService`);
 
 const program = require("commander");
@@ -34,24 +34,24 @@
 program
   .option(
     "-p, --protocol <protocol>",
-    "Set thrift protocol (binary|compact|json) [protocol]"
+    "Set thrift protocol (binary|compact|json) [protocol]",
   )
   .option(
     "-t, --transport <transport>",
-    "Set thrift transport (buffered|framed|http) [transport]"
+    "Set thrift transport (buffered|framed|http) [transport]",
   )
   .option("--port <port>", "Set thrift server port number to connect", 9090)
   .option("--host <host>", "Set thrift server host to connect", "localhost")
   .option(
     "--domain-socket <path>",
-    "Set thrift server unix domain socket to connect"
+    "Set thrift server unix domain socket to connect",
   )
   .option("--ssl", "use SSL transport")
   .option("--callback", "test with callback style functions")
   .option(
     "-t, --type <type>",
     "Select server type (http|multiplex|tcp|websocket)",
-    "tcp"
+    "tcp",
   )
   .option("--es6", "Use es6 code")
   .option("--es5", "Use es5 code")
@@ -76,7 +76,7 @@
 
 const options = {
   transport: helpers.transports[program.transport],
-  protocol: helpers.protocols[program.protocol]
+  protocol: helpers.protocols[program.protocol],
 };
 
 if (type === "http" || type === "websocket") {
@@ -128,7 +128,7 @@
   connection.open();
 }
 
-connection.on("error", function(err) {
+connection.on("error", function (err) {
   assert(false, err);
 });
 
@@ -141,11 +141,11 @@
   const secondclient = mp.createClient(
     "SecondService",
     SecondService,
-    connection
+    connection,
   );
 
-  connection.on("connect", function() {
-    secondclient.secondtestString("Test", function(err, response) {
+  connection.on("connect", function () {
+    secondclient.secondtestString("Test", function (err, response) {
       assert(!err);
       assert.equal('testString("Test")', response);
     });
@@ -161,7 +161,7 @@
 }
 
 function runTests() {
-  testDriver(client, function(status) {
+  testDriver(client, function (status) {
     console.log(status);
     if (type !== "http" && type !== "websocket") {
       connection.end();
@@ -172,4 +172,4 @@
   });
 }
 
-exports.expressoTest = function() {};
+exports.expressoTest = function () {};
diff --git a/lib/nodejs/test/deep-constructor.test.js b/lib/nodejs/test/deep-constructor.test.js
index a91ddb1..e5ac3f8 100644
--- a/lib/nodejs/test/deep-constructor.test.js
+++ b/lib/nodejs/test/deep-constructor.test.js
@@ -24,7 +24,7 @@
 
 function serializeBinary(data) {
   let buff;
-  const transport = new thrift.TBufferedTransport(null, function(msg) {
+  const transport = new thrift.TBufferedTransport(null, function (msg) {
     buff = msg;
   });
   const prot = new thrift.TBinaryProtocol(transport);
@@ -43,7 +43,7 @@
 
 function serializeJSON(data) {
   let buff;
-  const transport = new thrift.TBufferedTransport(null, function(msg) {
+  const transport = new thrift.TBufferedTransport(null, function (msg) {
     buff = msg;
   });
   const protocol = new thrift.TJSONProtocol(transport);
@@ -70,17 +70,17 @@
 
     struct_list_field: [
       new ttypes.Simple({ value: "b" }),
-      new ttypes.Simple({ value: "c" })
+      new ttypes.Simple({ value: "c" }),
     ],
 
     struct_set_field: [
       new ttypes.Simple({ value: "d" }),
-      new ttypes.Simple({ value: "e" })
+      new ttypes.Simple({ value: "e" }),
     ],
 
     struct_map_field: {
       A: new ttypes.Simple({ value: "f" }),
-      B: new ttypes.Simple({ value: "g" })
+      B: new ttypes.Simple({ value: "g" }),
     },
 
     struct_nested_containers_field: [
@@ -88,46 +88,46 @@
         {
           C: [
             new ttypes.Simple({ value: "h" }),
-            new ttypes.Simple({ value: "i" })
-          ]
-        }
-      ]
+            new ttypes.Simple({ value: "i" }),
+          ],
+        },
+      ],
     ],
 
     struct_nested_containers_field2: {
       D: [
         {
-          DA: new ttypes.Simple({ value: "j" })
+          DA: new ttypes.Simple({ value: "j" }),
         },
         {
-          DB: new ttypes.Simple({ value: "k" })
-        }
-      ]
+          DB: new ttypes.Simple({ value: "k" }),
+        },
+      ],
     },
 
     list_of_list_field: [
       ["l00", "l01", "l02"],
       ["l10", "l11", "l12"],
-      ["l20", "l21", "l22"]
+      ["l20", "l21", "l22"],
     ],
 
     list_of_list_of_list_field: [
       [
         ["m000", "m001", "m002"],
         ["m010", "m011", "m012"],
-        ["m020", "m021", "m022"]
+        ["m020", "m021", "m022"],
       ],
       [
         ["m100", "m101", "m102"],
         ["m110", "m111", "m112"],
-        ["m120", "m121", "m122"]
+        ["m120", "m121", "m122"],
       ],
       [
         ["m200", "m201", "m202"],
         ["m210", "m211", "m212"],
-        ["m220", "m221", "m222"]
-      ]
-    ]
+        ["m220", "m221", "m222"],
+      ],
+    ],
   });
 }
 
@@ -141,51 +141,51 @@
 
     struct_map_field: {
       A: { value: "f" },
-      B: { value: "g" }
+      B: { value: "g" },
     },
 
     struct_nested_containers_field: [
       [
         {
-          C: [{ value: "h" }, { value: "i" }]
-        }
-      ]
+          C: [{ value: "h" }, { value: "i" }],
+        },
+      ],
     ],
 
     struct_nested_containers_field2: {
       D: [
         {
-          DA: { value: "j" }
+          DA: { value: "j" },
         },
         {
-          DB: { value: "k" }
-        }
-      ]
+          DB: { value: "k" },
+        },
+      ],
     },
 
     list_of_list_field: [
       ["l00", "l01", "l02"],
       ["l10", "l11", "l12"],
-      ["l20", "l21", "l22"]
+      ["l20", "l21", "l22"],
     ],
 
     list_of_list_of_list_field: [
       [
         ["m000", "m001", "m002"],
         ["m010", "m011", "m012"],
-        ["m020", "m021", "m022"]
+        ["m020", "m021", "m022"],
       ],
       [
         ["m100", "m101", "m102"],
         ["m110", "m111", "m112"],
-        ["m120", "m121", "m122"]
+        ["m120", "m121", "m122"],
       ],
       [
         ["m200", "m201", "m202"],
         ["m210", "m211", "m212"],
-        ["m220", "m221", "m222"]
-      ]
-    ]
+        ["m220", "m221", "m222"],
+      ],
+    ],
   };
 }
 
@@ -244,7 +244,7 @@
 
 function createTestCases(serialize, deserialize) {
   const cases = {
-    "Serialize/deserialize should return equal object": function(assert) {
+    "Serialize/deserialize should return equal object": function (assert) {
       const tObj = createThriftObj();
       const received = deserialize(serialize(tObj), ttypes.Complex);
       assert.ok(tObj !== received, "not the same object");
@@ -252,51 +252,49 @@
       assert.end();
     },
 
-    "Nested structs and containers initialized from plain js objects should serialize same as if initialized from thrift objects": function(
-      assert
-    ) {
-      const tObj1 = createThriftObj();
-      const tObj2 = new ttypes.Complex(createJsObj());
-      assertValues(tObj2, assert);
-      const s1 = serialize(tObj1);
-      const s2 = serialize(tObj2);
-      assert.ok(bufferEquals(s1, s2));
-      assert.end();
-    },
+    "Nested structs and containers initialized from plain js objects should serialize same as if initialized from thrift objects":
+      function (assert) {
+        const tObj1 = createThriftObj();
+        const tObj2 = new ttypes.Complex(createJsObj());
+        assertValues(tObj2, assert);
+        const s1 = serialize(tObj1);
+        const s2 = serialize(tObj2);
+        assert.ok(bufferEquals(s1, s2));
+        assert.end();
+      },
 
-    "Modifications to args object should not affect constructed Thrift object": function(
-      assert
-    ) {
-      const args = createJsObj();
-      assertValues(args, assert);
+    "Modifications to args object should not affect constructed Thrift object":
+      function (assert) {
+        const args = createJsObj();
+        assertValues(args, assert);
 
-      const tObj = new ttypes.Complex(args);
-      assertValues(tObj, assert);
+        const tObj = new ttypes.Complex(args);
+        assertValues(tObj, assert);
 
-      args.struct_field.value = "ZZZ";
-      args.struct_list_field[0].value = "ZZZ";
-      args.struct_list_field[1].value = "ZZZ";
-      args.struct_set_field[0].value = "ZZZ";
-      args.struct_set_field[1].value = "ZZZ";
-      args.struct_map_field.A.value = "ZZZ";
-      args.struct_map_field.B.value = "ZZZ";
-      args.struct_nested_containers_field[0][0].C[0] = "ZZZ";
-      args.struct_nested_containers_field[0][0].C[1] = "ZZZ";
-      args.struct_nested_containers_field2.D[0].DA = "ZZZ";
-      args.struct_nested_containers_field2.D[0].DB = "ZZZ";
+        args.struct_field.value = "ZZZ";
+        args.struct_list_field[0].value = "ZZZ";
+        args.struct_list_field[1].value = "ZZZ";
+        args.struct_set_field[0].value = "ZZZ";
+        args.struct_set_field[1].value = "ZZZ";
+        args.struct_map_field.A.value = "ZZZ";
+        args.struct_map_field.B.value = "ZZZ";
+        args.struct_nested_containers_field[0][0].C[0] = "ZZZ";
+        args.struct_nested_containers_field[0][0].C[1] = "ZZZ";
+        args.struct_nested_containers_field2.D[0].DA = "ZZZ";
+        args.struct_nested_containers_field2.D[0].DB = "ZZZ";
 
-      assertValues(tObj, assert);
-      assert.end();
-    },
+        assertValues(tObj, assert);
+        assert.end();
+      },
 
-    "nulls are ok": function(assert) {
+    "nulls are ok": function (assert) {
       const tObj = new ttypes.Complex({
         struct_field: null,
         struct_list_field: null,
         struct_set_field: null,
         struct_map_field: null,
         struct_nested_containers_field: null,
-        struct_nested_containers_field2: null
+        struct_nested_containers_field2: null,
       });
       const received = deserialize(serialize(tObj), ttypes.Complex);
       assert.strictEqual(tObj.struct_field, null);
@@ -305,9 +303,9 @@
       assert.end();
     },
 
-    "Can make list with objects": function(assert) {
+    "Can make list with objects": function (assert) {
       const tObj = new ttypes.ComplexList({
-        struct_list_field: [new ttypes.Complex({})]
+        struct_list_field: [new ttypes.Complex({})],
       });
       const innerObj = tObj.struct_list_field[0];
       assert.ok(innerObj instanceof ttypes.Complex);
@@ -318,13 +316,13 @@
       assert.strictEqual(innerObj.struct_nested_containers_field, null);
       assert.strictEqual(innerObj.struct_nested_containers_field2, null);
       assert.end();
-    }
+    },
   };
   return cases;
 }
 
 function run(name, cases) {
-  Object.keys(cases).forEach(function(caseName) {
+  Object.keys(cases).forEach(function (caseName) {
     test(name + ": " + caseName, cases[caseName]);
   });
 }
diff --git a/lib/nodejs/test/episodic-code-generation-test/client.js b/lib/nodejs/test/episodic-code-generation-test/client.js
index 55dc702..631bfe7 100644
--- a/lib/nodejs/test/episodic-code-generation-test/client.js
+++ b/lib/nodejs/test/episodic-code-generation-test/client.js
@@ -37,21 +37,21 @@
 
 const options = {
   transport: thrift.TBufferedTransport,
-  protocol: thrift.TJSONProtocol
+  protocol: thrift.TJSONProtocol,
 };
 
 const connection = thrift.createConnection(host, port, options);
-const testDriver = function(client, callback) {
-  test("NodeJS episodic compilation client-server test", function(assert) {
+const testDriver = function (client, callback) {
+  test("NodeJS episodic compilation client-server test", function (assert) {
     const type1Object = new Types.Type1();
     type1Object.number = 42;
     type1Object.message = "The answer";
-    client.testEpisode(type1Object, function(err, response) {
+    client.testEpisode(type1Object, function (err, response) {
       assert.error(err, "no callback error");
       assert.equal(response.number, type1Object.number + 1);
       assert.equal(
         response.message,
-        type1Object.message + " [Hello from the server]"
+        type1Object.message + " [Hello from the server]",
       );
       assert.end();
       callback("Server successfully tested");
@@ -59,7 +59,7 @@
   });
 };
 
-connection.on("error", function(err) {
+connection.on("error", function (err) {
   assert(false, err);
 });
 
@@ -68,10 +68,10 @@
 runTests();
 
 function runTests() {
-  testDriver(client, function(status) {
+  testDriver(client, function (status) {
     console.log(status);
     connection.destroy();
   });
 }
 
-exports.expressoTest = function() {};
+exports.expressoTest = function () {};
diff --git a/lib/nodejs/test/episodic-code-generation-test/server.js b/lib/nodejs/test/episodic-code-generation-test/server.js
index 2917b68..feca380 100644
--- a/lib/nodejs/test/episodic-code-generation-test/server.js
+++ b/lib/nodejs/test/episodic-code-generation-test/server.js
@@ -33,17 +33,17 @@
 
 const options = {
   transport: thrift.TBufferedTransport,
-  protocol: thrift.TJSONProtocol
+  protocol: thrift.TJSONProtocol,
 };
 
 const ServiceHandler = {
-  testEpisode: function(receivedType1Object) {
+  testEpisode: function (receivedType1Object) {
     const type1Object = new Types.Type1();
     type1Object.number = receivedType1Object.number + 1;
     type1Object.message =
       receivedType1Object.message + " [Hello from the server]";
     return type1Object;
-  }
+  },
 };
 
 const server = thrift.createServer(Service, ServiceHandler, options);
diff --git a/lib/nodejs/test/exceptions.js b/lib/nodejs/test/exceptions.js
index f30f987..4119e76 100644
--- a/lib/nodejs/test/exceptions.js
+++ b/lib/nodejs/test/exceptions.js
@@ -26,23 +26,23 @@
   const e = new thrift.TApplicationException(1, "foo");
   assert.ok(
     e instanceof thrift.TApplicationException,
-    "is instanceof TApplicationException"
+    "is instanceof TApplicationException",
   );
   assert.ok(e instanceof thrift.TException, "is instanceof TException");
   assert.ok(e instanceof Error, "is instanceof Error");
   assert.equal(typeof e.stack, "string", "has stack trace");
   assert.ok(
     /^TApplicationException: foo/.test(e.stack),
-    "Stack trace has correct error name and message"
+    "Stack trace has correct error name and message",
   );
   assert.ok(
     e.stack.indexOf("test/exceptions.js:7:11") !== -1,
-    "stack trace starts on correct line and column"
+    "stack trace starts on correct line and column",
   );
   assert.equal(
     e.name,
     "TApplicationException",
-    "has function name TApplicationException"
+    "has function name TApplicationException",
   );
   assert.equal(e.message, "foo", 'has error message "foo"');
   assert.equal(e.type, 1, "has type 1");
@@ -53,23 +53,23 @@
   const e = new thrift.TApplicationException(1, 100);
   assert.ok(
     e instanceof thrift.TApplicationException,
-    "is instanceof TApplicationException"
+    "is instanceof TApplicationException",
   );
   assert.ok(e instanceof thrift.TException, "is instanceof TException");
   assert.ok(e instanceof Error, "is instanceof Error");
   assert.equal(typeof e.stack, "string", "has stack trace");
   assert.ok(
     /^TApplicationException: 100/.test(e.stack),
-    "Stack trace has correct error name and message"
+    "Stack trace has correct error name and message",
   );
   assert.ok(
     e.stack.indexOf("test/exceptions.js:7:11") !== -1,
-    "stack trace starts on correct line and column"
+    "stack trace starts on correct line and column",
   );
   assert.equal(
     e.name,
     "TApplicationException",
-    "has function name TApplicationException"
+    "has function name TApplicationException",
   );
   assert.equal(e.message, 100, "has error message 100");
   assert.equal(e.type, 1, "has type 1");
@@ -83,11 +83,11 @@
   assert.equal(typeof e.stack, "string", "has stack trace");
   assert.ok(
     /^TException: foo/.test(e.stack),
-    "Stack trace has correct error name and message"
+    "Stack trace has correct error name and message",
   );
   assert.ok(
     e.stack.indexOf("test/exceptions.js:21:11") !== -1,
-    "stack trace starts on correct line and column"
+    "stack trace starts on correct line and column",
   );
   assert.equal(e.name, "TException", "has function name TException");
   assert.equal(e.message, "foo", 'has error message "foo"');
@@ -98,22 +98,22 @@
   const e = new thrift.TProtocolException(1, "foo");
   assert.ok(
     e instanceof thrift.TProtocolException,
-    "is instanceof TProtocolException"
+    "is instanceof TProtocolException",
   );
   assert.ok(e instanceof Error, "is instanceof Error");
   assert.equal(typeof e.stack, "string", "has stack trace");
   assert.ok(
     /^TProtocolException: foo/.test(e.stack),
-    "Stack trace has correct error name and message"
+    "Stack trace has correct error name and message",
   );
   assert.ok(
     e.stack.indexOf("test/exceptions.js:33:11") !== -1,
-    "stack trace starts on correct line and column"
+    "stack trace starts on correct line and column",
   );
   assert.equal(
     e.name,
     "TProtocolException",
-    "has function name TProtocolException"
+    "has function name TProtocolException",
   );
   assert.equal(e.message, "foo", 'has error message "foo"');
   assert.equal(e.type, 1, "has type 1");
@@ -124,22 +124,22 @@
   const e = new InputBufferUnderrunError("foo");
   assert.ok(
     e instanceof InputBufferUnderrunError,
-    "is instanceof InputBufferUnderrunError"
+    "is instanceof InputBufferUnderrunError",
   );
   assert.ok(e instanceof Error, "is instanceof Error");
   assert.equal(typeof e.stack, "string", "has stack trace");
   assert.ok(
     /^InputBufferUnderrunError: foo/.test(e.stack),
-    "Stack trace has correct error name and message"
+    "Stack trace has correct error name and message",
   );
   assert.ok(
     e.stack.indexOf("test/exceptions.js:46:11") !== -1,
-    "stack trace starts on correct line and column"
+    "stack trace starts on correct line and column",
   );
   assert.equal(
     e.name,
     "InputBufferUnderrunError",
-    "has function name InputBufferUnderrunError"
+    "has function name InputBufferUnderrunError",
   );
   assert.equal(e.message, "foo", 'has error message "foo"');
   assert.end();
diff --git a/lib/nodejs/test/header.test.js b/lib/nodejs/test/header.test.js
index 12f1557..24f49be 100644
--- a/lib/nodejs/test/header.test.js
+++ b/lib/nodejs/test/header.test.js
@@ -26,11 +26,11 @@
 const path = require("path");
 
 const headerPayload = fs.readFileSync(
-  path.join(__dirname, "test_header_payload")
+  path.join(__dirname, "test_header_payload"),
 );
 
 const cases = {
-  "Should read headers from payload": function(assert) {
+  "Should read headers from payload": function (assert) {
     const transport = new TFramedTransport();
     transport.inBuf = Buffer.from(headerPayload);
 
@@ -39,7 +39,7 @@
     assert.equals(headers.Trace, "abcde");
     assert.end();
   },
-  "Should read different headers from different payload": function(assert) {
+  "Should read different headers from different payload": function (assert) {
     const transport = new TFramedTransport();
     const buf = Buffer.from(headerPayload);
     buf[24] = 115; // Change Parent to Parens
@@ -52,7 +52,7 @@
     assert.equals(headers.Trace, "abcde");
     assert.end();
   },
-  "Should read headers when reading message begin": function(assert) {
+  "Should read headers when reading message begin": function (assert) {
     const transport = new TFramedTransport();
     transport.inBuf = Buffer.from(headerPayload);
     const protocol = new THeaderProtocol(transport);
@@ -65,7 +65,7 @@
     assert.equals(result.mtype, thrift.Thrift.MessageType.CALL);
     assert.end();
   },
-  "Should be able to write headers": function(assert) {
+  "Should be able to write headers": function (assert) {
     const writeTransport = new TFramedTransport();
     writeTransport.setProtocolId(THeaderTransport.SubprotocolId.BINARY);
     writeTransport.setWriteHeader("Hihihihi", "hohohoho");
@@ -84,7 +84,7 @@
     assert.equals(headers.a, "z");
     assert.end();
   },
-  "Separate transports should have separate headers": function(assert) {
+  "Separate transports should have separate headers": function (assert) {
     const writeTransport = new TFramedTransport();
     writeTransport.setProtocolId(THeaderTransport.SubprotocolId.BINARY);
     writeTransport.setWriteHeader("foo", "bar");
@@ -101,8 +101,8 @@
     assert.equals(otherHeaders.otherfoo, "baz");
     assert.end();
   },
-  "Should handle large messages without crashing": function(assert) {
-    const callback = function() {};
+  "Should handle large messages without crashing": function (assert) {
+    const callback = function () {};
     const onData = TFramedTransport.receiver(callback);
 
     const largeChunkSize = 2 * 100 * 1024 * 1024;
@@ -112,9 +112,9 @@
     onData(Buffer.concat([sizeBuffer, largeChunk]));
 
     assert.end();
-  }
+  },
 };
 
-Object.keys(cases).forEach(function(caseName) {
+Object.keys(cases).forEach(function (caseName) {
   test(caseName, cases[caseName]);
 });
diff --git a/lib/nodejs/test/helpers.js b/lib/nodejs/test/helpers.js
index f3c27b3..51a0523 100644
--- a/lib/nodejs/test/helpers.js
+++ b/lib/nodejs/test/helpers.js
@@ -22,14 +22,14 @@
 
 module.exports.transports = {
   buffered: thrift.TBufferedTransport,
-  framed: thrift.TFramedTransport
+  framed: thrift.TFramedTransport,
 };
 
 module.exports.protocols = {
   json: thrift.TJSONProtocol,
   binary: thrift.TBinaryProtocol,
   compact: thrift.TCompactProtocol,
-  header: thrift.THeaderProtocol
+  header: thrift.THeaderProtocol,
 };
 
 module.exports.ecmaMode = process.argv.includes("--es6") ? "es6" : "es5";
diff --git a/lib/nodejs/test/int64.test.js b/lib/nodejs/test/int64.test.js
index 27ad28c..21d4d58 100644
--- a/lib/nodejs/test/int64.test.js
+++ b/lib/nodejs/test/int64.test.js
@@ -23,7 +23,7 @@
 const test = require("tape");
 
 const cases = {
-  "should correctly generate Int64 constants": function(assert) {
+  "should correctly generate Int64 constants": function (assert) {
     const EXPECTED_SMALL_INT64_AS_NUMBER = 42;
     const EXPECTED_SMALL_INT64 = new Int64(42);
     const EXPECTED_MAX_JS_SAFE_INT64 = new Int64(Number.MAX_SAFE_INTEGER);
@@ -39,7 +39,7 @@
       EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64,
       EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64,
       EXPECTED_MAX_SIGNED_INT64,
-      EXPECTED_MIN_SIGNED_INT64
+      EXPECTED_MIN_SIGNED_INT64,
     ];
 
     assert.ok(EXPECTED_SMALL_INT64.equals(i64types.SMALL_INT64));
@@ -47,27 +47,27 @@
     assert.ok(EXPECTED_MIN_JS_SAFE_INT64.equals(i64types.MIN_JS_SAFE_INT64));
     assert.ok(
       EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64.equals(
-        i64types.MAX_JS_SAFE_PLUS_ONE_INT64
-      )
+        i64types.MAX_JS_SAFE_PLUS_ONE_INT64,
+      ),
     );
     assert.ok(
       EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64.equals(
-        i64types.MIN_JS_SAFE_MINUS_ONE_INT64
-      )
+        i64types.MIN_JS_SAFE_MINUS_ONE_INT64,
+      ),
     );
     assert.ok(EXPECTED_MAX_SIGNED_INT64.equals(i64types.MAX_SIGNED_INT64));
     assert.ok(EXPECTED_MIN_SIGNED_INT64.equals(i64types.MIN_SIGNED_INT64));
     assert.equal(
       EXPECTED_SMALL_INT64_AS_NUMBER,
-      i64types.SMALL_INT64.toNumber()
+      i64types.SMALL_INT64.toNumber(),
     );
     assert.equal(
       Number.MAX_SAFE_INTEGER,
-      i64types.MAX_JS_SAFE_INT64.toNumber()
+      i64types.MAX_JS_SAFE_INT64.toNumber(),
     );
     assert.equal(
       Number.MIN_SAFE_INTEGER,
-      i64types.MIN_JS_SAFE_INT64.toNumber()
+      i64types.MIN_JS_SAFE_INT64.toNumber(),
     );
 
     for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
@@ -79,14 +79,14 @@
       assert.ok(
         i64types.INT64_2_INT64_MAP[
           JSONInt64.toDecimalString(int64Object)
-        ].equals(int64Object)
+        ].equals(int64Object),
       );
     }
 
     assert.end();
-  }
+  },
 };
 
-Object.keys(cases).forEach(function(caseName) {
+Object.keys(cases).forEach(function (caseName) {
   test(caseName, cases[caseName]);
 });
diff --git a/lib/nodejs/test/server.js b/lib/nodejs/test/server.js
index 677839a..c8e7808 100644
--- a/lib/nodejs/test/server.js
+++ b/lib/nodejs/test/server.js
@@ -29,12 +29,12 @@
   .option(
     "-p, --protocol <protocol>",
     "Set thrift protocol (binary|compact|json)",
-    "binary"
+    "binary",
   )
   .option(
     "-t, --transport <transport>",
     "Set thrift transport (buffered|framed|http)",
-    "buffered"
+    "buffered",
   )
   .option("--ssl", "use ssl transport")
   .option("--port <port>", "Set thrift server port", 9090)
@@ -42,7 +42,7 @@
   .option(
     "-t, --type <type>",
     "Select server type (http|multiplex|tcp|websocket)",
-    "tcp"
+    "tcp",
   )
   .option("--callback", "test with callback style functions")
   .option("--es6", "Use es6 code")
@@ -68,7 +68,7 @@
 
 let options = {
   transport: helpers.transports[program.transport],
-  protocol: helpers.protocols[program.protocol]
+  protocol: helpers.protocols[program.protocol],
 };
 
 if (type === "http" || type === "websocket") {
@@ -78,30 +78,30 @@
   options = {
     services: { "/test": options },
     cors: {
-      "*": true
-    }
+      "*": true,
+    },
   };
 }
 
 let processor;
 if (type === "multiplex") {
   const SecondServiceHandler = {
-    secondtestString: function(thing, result) {
+    secondtestString: function (thing, result) {
       console.log('testString("' + thing + '")');
       result(null, 'testString("' + thing + '")');
-    }
+    },
   };
 
   processor = new thrift.MultiplexedProcessor();
 
   processor.registerProcessor(
     "ThriftTest",
-    new ThriftTest.Processor(ThriftTestHandler)
+    new ThriftTest.Processor(ThriftTestHandler),
   );
 
   processor.registerProcessor(
     "SecondService",
-    new SecondService.Processor(SecondServiceHandler)
+    new SecondService.Processor(SecondServiceHandler),
   );
 }
 
@@ -114,7 +114,7 @@
   ) {
     options.tls = {
       key: fs.readFileSync(path.resolve(__dirname, "server.key")),
-      cert: fs.readFileSync(path.resolve(__dirname, "server.crt"))
+      cert: fs.readFileSync(path.resolve(__dirname, "server.crt")),
     };
   }
 }
diff --git a/lib/nodejs/test/test-cases.js b/lib/nodejs/test/test-cases.js
index 02c566f..98077f7 100644
--- a/lib/nodejs/test/test-cases.js
+++ b/lib/nodejs/test/test-cases.js
@@ -65,9 +65,9 @@
   a: "123",
   "a b": "with spaces ",
   same: "same",
-  "0": "numeric key",
+  0: "numeric key",
   longValue: stringTest,
-  stringTest: "long key"
+  stringTest: "long key",
 });
 
 const simple = [
@@ -93,9 +93,9 @@
   ["testI64", new Int64(new Buffer([0, 0x20, 0, 0, 0, 0, 0, 1]))], // 2^53+1
   [
     "testI64",
-    new Int64(new Buffer([0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]))
+    new Int64(new Buffer([0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff])),
   ], // -2^53-1
-  ["testTypedef", 69]
+  ["testTypedef", 69],
 ];
 
 const mapout = {};
@@ -106,21 +106,21 @@
 const deep = [
   [
     "testList",
-    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
-  ]
+    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
+  ],
 ];
 
 const deepUnordered = [
   ["testMap", mapout],
   ["testSet", [1, 2, 3]],
-  ["testStringMap", mapTestInput]
+  ["testStringMap", mapTestInput],
 ];
 
 const out = new ttypes.Xtruct({
   string_thing: "Zero",
   byte_thing: 1,
   i32_thing: -3,
-  i64_thing: 1000000
+  i64_thing: 1000000,
 });
 
 const out2 = new ttypes.Xtruct2();
@@ -129,44 +129,44 @@
 out2.i32_thing = 5;
 
 const crazy = new ttypes.Insanity({
-  userMap: { "5": 5, "8": 8 },
+  userMap: { 5: 5, 8: 8 },
   xtructs: [
     new ttypes.Xtruct({
       string_thing: "Goodbye4",
       byte_thing: 4,
       i32_thing: 4,
-      i64_thing: 4
+      i64_thing: 4,
     }),
     new ttypes.Xtruct({
       string_thing: "Hello2",
       byte_thing: 2,
       i32_thing: 2,
-      i64_thing: 2
-    })
-  ]
+      i64_thing: 2,
+    }),
+  ],
 });
 
 const crazy2 = new ttypes.Insanity({
-  userMap: { "5": 5, "8": 8 },
+  userMap: { 5: 5, 8: 8 },
   xtructs: [
     {
       string_thing: "Goodbye4",
       byte_thing: 4,
       i32_thing: 4,
-      i64_thing: 4
+      i64_thing: 4,
     },
     {
       string_thing: "Hello2",
       byte_thing: 2,
       i32_thing: 2,
-      i64_thing: 2
-    }
-  ]
+      i64_thing: 2,
+    },
+  ],
 });
 
 const insanity = {
-  "1": { "2": crazy, "3": crazy },
-  "2": { "6": { userMap: {}, xtructs: [] } }
+  1: { 2: crazy, 3: crazy },
+  2: { 6: { userMap: {}, xtructs: [] } },
 };
 
 module.exports.simple = simple;
diff --git a/lib/nodejs/test/test_driver.js b/lib/nodejs/test/test_driver.js
index 7c9a919..0593aea 100644
--- a/lib/nodejs/test/test_driver.js
+++ b/lib/nodejs/test/test_driver.js
@@ -34,18 +34,18 @@
 const Int64 = require("node-int64");
 const testCases = require("./test-cases");
 
-exports.ThriftTestDriver = function(client, callback) {
+exports.ThriftTestDriver = function (client, callback) {
   test(
     "NodeJS Style Callback Client Tests",
     { skip: helpers.ecmaMode === "es6" },
-    function(assert) {
+    function (assert) {
       const checkRecursively = makeRecursiveCheck(assert);
 
       function makeAsserter(assertionFn) {
-        return function(c) {
+        return function (c) {
           const fnName = c[0];
           const expected = c[1];
-          client[fnName](expected, function(err, actual) {
+          client[fnName](expected, function (err, actual) {
             assert.error(err, fnName + ": no callback error");
             assertionFn(actual, expected, fnName);
           });
@@ -53,18 +53,18 @@
       }
 
       testCases.simple.forEach(
-        makeAsserter(function(a, e, m) {
+        makeAsserter(function (a, e, m) {
           if (a instanceof Int64) {
             const e64 = e instanceof Int64 ? e : new Int64(e);
             assert.deepEqual(a.buffer, e64.buffer, m);
           } else {
             assert.equal(a, e, m);
           }
-        })
+        }),
       );
       testCases.deep.forEach(makeAsserter(assert.deepEqual));
       testCases.deepUnordered.forEach(
-        makeAsserter(makeUnorderedDeepEqual(assert))
+        makeAsserter(makeUnorderedDeepEqual(assert)),
       );
 
       const arr = [];
@@ -72,106 +72,106 @@
         arr[i] = 255 - i;
       }
       let buf = new Buffer(arr);
-      client.testBinary(buf, function(err, response) {
+      client.testBinary(buf, function (err, response) {
         assert.error(err, "testBinary: no callback error");
         assert.equal(response.length, 256, "testBinary");
         assert.deepEqual(response, buf, "testBinary(Buffer)");
       });
       buf = new Buffer(arr);
-      client.testBinary(buf.toString("binary"), function(err, response) {
+      client.testBinary(buf.toString("binary"), function (err, response) {
         assert.error(err, "testBinary: no callback error");
         assert.equal(response.length, 256, "testBinary");
         assert.deepEqual(response, buf, "testBinary(string)");
       });
 
-      client.testMapMap(42, function(err, response) {
+      client.testMapMap(42, function (err, response) {
         const expected = {
-          "4": { "1": 1, "2": 2, "3": 3, "4": 4 },
-          "-4": { "-4": -4, "-3": -3, "-2": -2, "-1": -1 }
+          4: { 1: 1, 2: 2, 3: 3, 4: 4 },
+          "-4": { "-4": -4, "-3": -3, "-2": -2, "-1": -1 },
         };
         assert.error(err, "testMapMap: no callback error");
         assert.deepEqual(expected, response, "testMapMap");
       });
 
-      client.testStruct(testCases.out, function(err, response) {
+      client.testStruct(testCases.out, function (err, response) {
         assert.error(err, "testStruct: no callback error");
         checkRecursively(testCases.out, response, "testStruct");
       });
 
-      client.testNest(testCases.out2, function(err, response) {
+      client.testNest(testCases.out2, function (err, response) {
         assert.error(err, "testNest: no callback error");
         checkRecursively(testCases.out2, response, "testNest");
       });
 
-      client.testInsanity(testCases.crazy, function(err, response) {
+      client.testInsanity(testCases.crazy, function (err, response) {
         assert.error(err, "testInsanity: no callback error");
         checkRecursively(testCases.insanity, response, "testInsanity");
       });
 
-      client.testInsanity(testCases.crazy2, function(err, response) {
+      client.testInsanity(testCases.crazy2, function (err, response) {
         assert.error(err, "testInsanity2: no callback error");
         checkRecursively(testCases.insanity, response, "testInsanity2");
       });
 
-      client.testException("TException", function(err, response) {
+      client.testException("TException", function (err, response) {
         assert.ok(
           err instanceof TException,
-          "testException: correct error type"
+          "testException: correct error type",
         );
         assert.ok(!response, "testException: no response");
       });
 
-      client.testException("Xception", function(err, response) {
+      client.testException("Xception", function (err, response) {
         assert.ok(
           err instanceof ttypes.Xception,
-          "testException: correct error type"
+          "testException: correct error type",
         );
         assert.ok(!response, "testException: no response");
         assert.equal(err.errorCode, 1001, "testException: correct error code");
         assert.equal(
           "Xception",
           err.message,
-          "testException: correct error message"
+          "testException: correct error message",
         );
       });
 
-      client.testException("no Exception", function(err, response) {
+      client.testException("no Exception", function (err, response) {
         assert.error(err, "testException: no callback error");
         assert.ok(!response, "testException: no response");
       });
 
-      client.testOneway(0, function(err, response) {
+      client.testOneway(0, function (err, response) {
         assert.error(err, "testOneway: no callback error");
         assert.strictEqual(response, undefined, "testOneway: void response");
       });
 
-      checkOffByOne(function(done) {
-        client.testI32(-1, function(err, response) {
+      checkOffByOne(function (done) {
+        client.testI32(-1, function (err, response) {
           assert.error(err, "checkOffByOne: no callback error");
           assert.equal(-1, response);
           assert.end();
           done();
         });
       }, callback);
-    }
+    },
   );
 
   // ES6 does not support callback style
   if (helpers.ecmaMode === "es6") {
-    checkOffByOne(done => done(), callback);
+    checkOffByOne((done) => done(), callback);
   }
 };
 
-exports.ThriftTestDriverPromise = function(client, callback) {
-  test("Promise Client Tests", function(assert) {
+exports.ThriftTestDriverPromise = function (client, callback) {
+  test("Promise Client Tests", function (assert) {
     const checkRecursively = makeRecursiveCheck(assert);
 
     function makeAsserter(assertionFn) {
-      return function(c) {
+      return function (c) {
         const fnName = c[0];
         const expected = c[1];
         client[fnName](expected)
-          .then(function(actual) {
+          .then(function (actual) {
             assertionFn(actual, expected, fnName);
           })
           .catch(() => assert.fail("fnName"));
@@ -179,63 +179,63 @@
     }
 
     testCases.simple.forEach(
-      makeAsserter(function(a, e, m) {
+      makeAsserter(function (a, e, m) {
         if (a instanceof Int64) {
           const e64 = e instanceof Int64 ? e : new Int64(e);
           assert.deepEqual(a.buffer, e64.buffer, m);
         } else {
           assert.equal(a, e, m);
         }
-      })
+      }),
     );
     testCases.deep.forEach(makeAsserter(assert.deepEqual));
     testCases.deepUnordered.forEach(
-      makeAsserter(makeUnorderedDeepEqual(assert))
+      makeAsserter(makeUnorderedDeepEqual(assert)),
     );
 
     client
       .testStruct(testCases.out)
-      .then(function(response) {
+      .then(function (response) {
         checkRecursively(testCases.out, response, "testStruct");
       })
       .catch(() => assert.fail("testStruct"));
 
     client
       .testNest(testCases.out2)
-      .then(function(response) {
+      .then(function (response) {
         checkRecursively(testCases.out2, response, "testNest");
       })
       .catch(() => assert.fail("testNest"));
 
     client
       .testInsanity(testCases.crazy)
-      .then(function(response) {
+      .then(function (response) {
         checkRecursively(testCases.insanity, response, "testInsanity");
       })
       .catch(() => assert.fail("testInsanity"));
 
     client
       .testInsanity(testCases.crazy2)
-      .then(function(response) {
+      .then(function (response) {
         checkRecursively(testCases.insanity, response, "testInsanity2");
       })
       .catch(() => assert.fail("testInsanity2"));
 
     client
       .testException("TException")
-      .then(function() {
+      .then(function () {
         assert.fail("testException: TException");
       })
-      .catch(function(err) {
+      .catch(function (err) {
         assert.ok(err instanceof TException);
       });
 
     client
       .testException("Xception")
-      .then(function() {
+      .then(function () {
         assert.fail("testException: Xception");
       })
-      .catch(function(err) {
+      .catch(function (err) {
         assert.ok(err instanceof ttypes.Xception);
         assert.equal(err.errorCode, 1001);
         assert.equal("Xception", err.message);
@@ -243,22 +243,22 @@
 
     client
       .testException("no Exception")
-      .then(function(response) {
+      .then(function (response) {
         assert.equal(undefined, response); //void
       })
       .catch(() => assert.fail("testException"));
 
     client
       .testOneway(0)
-      .then(function(response) {
+      .then(function (response) {
         assert.strictEqual(response, undefined, "testOneway: void response");
       })
       .catch(() => assert.fail("testOneway: should not reject"));
 
-    checkOffByOne(function(done) {
+    checkOffByOne(function (done) {
       client
         .testI32(-1)
-        .then(function(response) {
+        .then(function (response) {
           assert.equal(-1, response);
           assert.end();
           done();
@@ -272,7 +272,7 @@
 // =========================================================
 
 function makeRecursiveCheck(assert) {
-  return function(map1, map2, msg) {
+  return function (map1, map2, msg) {
     const equal = checkRecursively(map1, map2);
 
     assert.ok(equal, msg);
@@ -295,7 +295,7 @@
             return map1 == map2;
           }
         } else {
-          return Object.keys(map1).every(function(key) {
+          return Object.keys(map1).every(function (key) {
             return checkRecursively(map1[key], map2[key]);
           });
         }
@@ -319,7 +319,7 @@
    * Because this is the last test against the server, when it completes
    * the entire suite is complete by definition (the tests run serially).
    */
-  done(function() {
+  done(function () {
     test_complete = true;
   });
 
@@ -334,7 +334,7 @@
         callback(
           "Server test failed to complete after " +
             (retry_limit * retry_interval) / 1000 +
-            " seconds"
+            " seconds",
         );
       }
     }
@@ -344,7 +344,7 @@
 }
 
 function makeUnorderedDeepEqual(assert) {
-  return function(actual, expected, name) {
+  return function (actual, expected, name) {
     assert.equal(actual.length, expected.length, name);
     for (const k in actual) {
       let found = false;
diff --git a/lib/nodejs/test/test_handler.js b/lib/nodejs/test/test_handler.js
index 317a7c8..a6a6fc2 100644
--- a/lib/nodejs/test/test_handler.js
+++ b/lib/nodejs/test/test_handler.js
@@ -24,7 +24,7 @@
 const TException = require("thrift").Thrift.TException;
 
 function makeSyncHandler() {
-  return function(thing) {
+  return function (thing) {
     return thing;
   };
 }
@@ -36,11 +36,11 @@
   testMulti: testMulti,
   testException: testException,
   testMultiException: testMultiException,
-  testOneway: testOneway
+  testOneway: testOneway,
 };
 
 function makeAsyncHandler(label) {
-  return function(thing, result) {
+  return function (thing, result) {
     thing = syncHandlers[label](thing);
     result(null, thing);
   };
@@ -51,7 +51,7 @@
   testMulti: testMultiAsync,
   testException: testExceptionAsync,
   testMultiException: testMultiExceptionAsync,
-  testOneway: testOnewayAsync
+  testOneway: testOnewayAsync,
 };
 
 const identityHandlers = [
@@ -69,7 +69,7 @@
   "testSet",
   "testList",
   "testEnum",
-  "testTypedef"
+  "testTypedef",
 ];
 
 function testVoid() {
@@ -208,12 +208,12 @@
   testOneway(sleepFor);
 }
 
-identityHandlers.forEach(function(label) {
+identityHandlers.forEach(function (label) {
   syncHandlers[label] = makeSyncHandler(label);
   asyncHandlers[label] = makeAsyncHandler(label);
 });
 
-["testMapMap", "testInsanity"].forEach(function(label) {
+["testMapMap", "testInsanity"].forEach(function (label) {
   asyncHandlers[label] = makeAsyncHandler(label);
 });
 
diff --git a/lib/nodets/test/client.ts b/lib/nodets/test/client.ts
index 4fa3c28..a95567f 100644
--- a/lib/nodets/test/client.ts
+++ b/lib/nodets/test/client.ts
@@ -39,15 +39,15 @@
 
 var options = {
   transport: Thrift.TBufferedTransport,
-  protocol: Thrift.TBinaryProtocol
+  protocol: Thrift.TBinaryProtocol,
 };
 
 var testDriver = promise ? ThriftTestDriverPromise : ThriftTestDriver;
 
 var connection = thrift.createConnection("localhost", port, options);
 
-connection.on("error", function(err: string) {
-    assert(false, err);
+connection.on("error", function (err: string) {
+  assert(false, err);
 });
 
 var client = thrift.createClient(ThriftTest.Client, connection);
@@ -60,4 +60,4 @@
   });
 }
 
-exports.expressoTest = function() {};
+exports.expressoTest = function () {};
diff --git a/lib/nodets/test/int64.test.ts b/lib/nodets/test/int64.test.ts
index d209234..bb03458 100644
--- a/lib/nodets/test/int64.test.ts
+++ b/lib/nodets/test/int64.test.ts
@@ -18,18 +18,26 @@
  */
 
 import Int64 = require("node-int64");
-import JSONInt64 = require('json-int64');
+import JSONInt64 = require("json-int64");
 import i64types = require("./gen-nodejs/Int64Test_types");
 import test = require("tape");
 
 const cases = {
-  "should correctly generate Int64 constants": function(assert) {
+  "should correctly generate Int64 constants": function (assert) {
     const EXPECTED_SMALL_INT64_AS_NUMBER: number = 42;
     const EXPECTED_SMALL_INT64: Int64 = new Int64(42);
-    const EXPECTED_MAX_JS_SAFE_INT64: Int64 = new Int64(Number.MAX_SAFE_INTEGER);
-    const EXPECTED_MIN_JS_SAFE_INT64: Int64 = new Int64(Number.MIN_SAFE_INTEGER);
-    const EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64: Int64 = new Int64("0020000000000000"); // hex-encoded
-    const EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64: Int64 = new Int64("ffe0000000000000"); // hex-encoded 2's complement
+    const EXPECTED_MAX_JS_SAFE_INT64: Int64 = new Int64(
+      Number.MAX_SAFE_INTEGER,
+    );
+    const EXPECTED_MIN_JS_SAFE_INT64: Int64 = new Int64(
+      Number.MIN_SAFE_INTEGER,
+    );
+    const EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64: Int64 = new Int64(
+      "0020000000000000",
+    ); // hex-encoded
+    const EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64: Int64 = new Int64(
+      "ffe0000000000000",
+    ); // hex-encoded 2's complement
     const EXPECTED_MAX_SIGNED_INT64: Int64 = new Int64("7fffffffffffffff"); // hex-encoded
     const EXPECTED_MIN_SIGNED_INT64: Int64 = new Int64("8000000000000000"); // hex-encoded 2's complement
     const EXPECTED_INT64_LIST: Int64[] = [
@@ -39,7 +47,7 @@
       EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64,
       EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64,
       EXPECTED_MAX_SIGNED_INT64,
-      EXPECTED_MIN_SIGNED_INT64
+      EXPECTED_MIN_SIGNED_INT64,
     ];
 
     assert.ok(EXPECTED_SMALL_INT64.equals(i64types.SMALL_INT64));
@@ -47,42 +55,46 @@
     assert.ok(EXPECTED_MIN_JS_SAFE_INT64.equals(i64types.MIN_JS_SAFE_INT64));
     assert.ok(
       EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64.equals(
-        i64types.MAX_JS_SAFE_PLUS_ONE_INT64
-      )
+        i64types.MAX_JS_SAFE_PLUS_ONE_INT64,
+      ),
     );
     assert.ok(
       EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64.equals(
-        i64types.MIN_JS_SAFE_MINUS_ONE_INT64
-      )
+        i64types.MIN_JS_SAFE_MINUS_ONE_INT64,
+      ),
     );
     assert.ok(EXPECTED_MAX_SIGNED_INT64.equals(i64types.MAX_SIGNED_INT64));
     assert.ok(EXPECTED_MIN_SIGNED_INT64.equals(i64types.MIN_SIGNED_INT64));
     assert.equal(
       EXPECTED_SMALL_INT64_AS_NUMBER,
-      i64types.SMALL_INT64.toNumber()
+      i64types.SMALL_INT64.toNumber(),
     );
     assert.equal(
       Number.MAX_SAFE_INTEGER,
-      i64types.MAX_JS_SAFE_INT64.toNumber()
+      i64types.MAX_JS_SAFE_INT64.toNumber(),
     );
     assert.equal(
       Number.MIN_SAFE_INTEGER,
-      i64types.MIN_JS_SAFE_INT64.toNumber()
+      i64types.MIN_JS_SAFE_INT64.toNumber(),
     );
 
     for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
       assert.ok(EXPECTED_INT64_LIST[i].equals(i64types.INT64_LIST[i]));
     }
 
-    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i){
+    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
       let int64Object = EXPECTED_INT64_LIST[i];
-      assert.ok(i64types.INT64_2_INT64_MAP[JSONInt64.toDecimalString(int64Object)].equals(int64Object));
+      assert.ok(
+        i64types.INT64_2_INT64_MAP[
+          JSONInt64.toDecimalString(int64Object)
+        ].equals(int64Object),
+      );
     }
 
     assert.end();
-  }
+  },
 };
 
-Object.keys(cases).forEach(function(caseName) {
+Object.keys(cases).forEach(function (caseName) {
   test(caseName, cases[caseName]);
 });
diff --git a/lib/nodets/test/server.ts b/lib/nodets/test/server.ts
index 2da53ae..79457ce 100644
--- a/lib/nodets/test/server.ts
+++ b/lib/nodets/test/server.ts
@@ -1,26 +1,33 @@
 import thrift = require("thrift");
-var program = require('commander');
-import ThriftTest = require('./gen-nodejs/ThriftTest');
-import test_handler = require('./test_handler');
-
+var program = require("commander");
+import ThriftTest = require("./gen-nodejs/ThriftTest");
+import test_handler = require("./test_handler");
 
 program
-  .option('--port <port>', 'Set thrift server port', 9090)
-  .option('--promise', 'test with promise style functions')
-  .option('--protocol', '"Set thrift protocol (binary) [protocol]"')
+  .option("--port <port>", "Set thrift server port", 9090)
+  .option("--promise", "test with promise style functions")
+  .option("--protocol", '"Set thrift protocol (binary) [protocol]"')
   .parse(process.argv);
 
 var port: number = program.port;
 
 var options: thrift.ServerOptions = {
   transport: thrift.TBufferedTransport,
-  protocol: thrift.TBinaryProtocol
+  protocol: thrift.TBinaryProtocol,
 };
 
 var server: thrift.Server;
 if (program.promise) {
-  server = thrift.createServer(ThriftTest.Processor, new test_handler.AsyncThriftTestHandler(), options);
+  server = thrift.createServer(
+    ThriftTest.Processor,
+    new test_handler.AsyncThriftTestHandler(),
+    options,
+  );
 } else {
-  server = thrift.createServer(ThriftTest.Processor, new test_handler.SyncThriftTestHandler(), options);
+  server = thrift.createServer(
+    ThriftTest.Processor,
+    new test_handler.SyncThriftTestHandler(),
+    options,
+  );
 }
 server.listen(port);
diff --git a/lib/nodets/test/test-cases.ts b/lib/nodets/test/test-cases.ts
index 44f254e..98f54af 100644
--- a/lib/nodets/test/test-cases.ts
+++ b/lib/nodets/test/test-cases.ts
@@ -1,91 +1,100 @@
-'use strict';
+"use strict";
 
-import ttypes = require('./gen-nodejs/ThriftTest_types');
-import Int64 = require('node-int64');
+import ttypes = require("./gen-nodejs/ThriftTest_types");
+import Int64 = require("node-int64");
 
 //all Languages in UTF-8
 /*jshint -W100 */
-export var stringTest = "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, " +
-    "Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, " +
-    "Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, " +
-    "বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, " +
-    "Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, " +
-    "Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, " +
-    "Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, " +
-    "Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhlig, Galego, " +
-    "Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, " +
-    "Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, " +
-    "Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, " +
-    "ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, " +
-    "Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, " +
-    "Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa " +
-    "Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, مازِرونی, Bahasa " +
-    "Melayu, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪" +
-    "Norsk (nynorsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, " +
-    "Occitan, Иронау, Papiamentu, Deitsch, Polski, پنجابی, پښتو, " +
-    "Norfuk / Pitkern, Português, Runa Simi, Rumantsch, Romani, Română, " +
-    "Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple " +
-    "English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, " +
-    "Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, " +
-    "Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, " +
-    "Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, " +
-    "Bân-lâm-gú, 粵語";
+export var stringTest =
+  "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, " +
+  "Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, " +
+  "Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, " +
+  "বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, " +
+  "Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, " +
+  "Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, " +
+  "Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, " +
+  "Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhlig, Galego, " +
+  "Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, " +
+  "Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, " +
+  "Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, " +
+  "ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, " +
+  "Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, " +
+  "Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa " +
+  "Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, مازِرونی, Bahasa " +
+  "Melayu, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪" +
+  "Norsk (nynorsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, " +
+  "Occitan, Иронау, Papiamentu, Deitsch, Polski, پنجابی, پښتو, " +
+  "Norfuk / Pitkern, Português, Runa Simi, Rumantsch, Romani, Română, " +
+  "Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple " +
+  "English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, " +
+  "Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, " +
+  "Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, " +
+  "Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, " +
+  "Bân-lâm-gú, 粵語";
 /*jshint +W100 */
 
-export var specialCharacters = 'quote: \" backslash:' +
-    ' forwardslash-escaped: \/ ' +
-    ' backspace: \b formfeed: \f newline: \n return: \r tab: ' +
-    ' now-all-of-them-together: "\\\/\b\n\r\t' +
-    ' now-a-bunch-of-junk: !@#$%&()(&%$#{}{}<><><' +
-    ' char-to-test-json-parsing: ]] \"]] \\" }}}{ [[[ ';
+export var specialCharacters =
+  'quote: \" backslash:' +
+  " forwardslash-escaped: \/ " +
+  " backspace: \b formfeed: \f newline: \n return: \r tab: " +
+  ' now-all-of-them-together: "\\\/\b\n\r\t' +
+  " now-a-bunch-of-junk: !@#$%&()(&%$#{}{}<><><" +
+  ' char-to-test-json-parsing: ]] \"]] \\" }}}{ [[[ ';
 
 export var mapTestInput = {
-  "a":"123", "a b":"with spaces ", "same":"same", "0":"numeric key",
-  "longValue":stringTest, stringTest:"long key"
+  a: "123",
+  "a b": "with spaces ",
+  same: "same",
+  "0": "numeric key",
+  longValue: stringTest,
+  stringTest: "long key",
 };
 
 export var simple = [
-  ['testVoid', undefined],
-  ['testString', 'Test'],
-  ['testString', ''],
-  ['testString', stringTest],
-  ['testString', specialCharacters],
-  ['testByte', 1],
-  ['testByte', 0],
-  ['testByte', -1],
-  ['testByte', -127],
-  ['testI32', -1],
-  ['testDouble', -5.2098523],
-  ['testDouble', 7.012052175215044],
-  ['testEnum', ttypes.Numberz.ONE]
+  ["testVoid", undefined],
+  ["testString", "Test"],
+  ["testString", ""],
+  ["testString", stringTest],
+  ["testString", specialCharacters],
+  ["testByte", 1],
+  ["testByte", 0],
+  ["testByte", -1],
+  ["testByte", -127],
+  ["testI32", -1],
+  ["testDouble", -5.2098523],
+  ["testDouble", 7.012052175215044],
+  ["testEnum", ttypes.Numberz.ONE],
 ];
 
 export var simpleLoose = [
-  ['testI64', 5],
-  ['testI64', -5],
-  ['testI64', 734359738368],
-  ['testI64', -34359738368],
-  ['testI64', -734359738368],
-  ['testTypedef', 69]
-]
+  ["testI64", 5],
+  ["testI64", -5],
+  ["testI64", 734359738368],
+  ["testI64", -34359738368],
+  ["testI64", -734359738368],
+  ["testTypedef", 69],
+];
 
-var mapout: {[key: number]: number; } = {};
+var mapout: { [key: number]: number } = {};
 for (var i = 0; i < 5; ++i) {
-  mapout[i] = i-10;
+  mapout[i] = i - 10;
 }
 
 export var deep = [
-  ['testMap', mapout],
-  ['testSet', [1,2,3]],
-  ['testList', [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]],
-  ['testStringMap', mapTestInput]
+  ["testMap", mapout],
+  ["testSet", [1, 2, 3]],
+  [
+    "testList",
+    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
+  ],
+  ["testStringMap", mapTestInput],
 ];
 
 export var out = new ttypes.Xtruct({
-  string_thing: 'Zero',
+  string_thing: "Zero",
   byte_thing: 1,
   i32_thing: -3,
-  i64_thing: new Int64(1000000)
+  i64_thing: new Int64(1000000),
 });
 
 export var out2 = new ttypes.Xtruct2();
@@ -94,21 +103,24 @@
 out2.i32_thing = 5;
 
 export var crazy = new ttypes.Insanity({
-  "userMap":{ "5":new Int64(5), "8":new Int64(8) },
-  "xtructs":[new ttypes.Xtruct({
-      "string_thing":"Goodbye4",
-      "byte_thing":4,
-      "i32_thing":4,
-      "i64_thing":new Int64(4)
-    }), new ttypes.Xtruct({
-      "string_thing":"Hello2",
-      "byte_thing":2,
-      "i32_thing":2,
-      "i64_thing":new Int64(2)
-    })]
+  userMap: { "5": new Int64(5), "8": new Int64(8) },
+  xtructs: [
+    new ttypes.Xtruct({
+      string_thing: "Goodbye4",
+      byte_thing: 4,
+      i32_thing: 4,
+      i64_thing: new Int64(4),
+    }),
+    new ttypes.Xtruct({
+      string_thing: "Hello2",
+      byte_thing: 2,
+      i32_thing: 2,
+      i64_thing: new Int64(2),
+    }),
+  ],
 });
 
 export var insanity: any = {
-  "1":{ "2": crazy, "3": crazy },
-  "2":{ "6":{ "userMap":{}, "xtructs":[] } }
+  "1": { "2": crazy, "3": crazy },
+  "2": { "6": { userMap: {}, xtructs: [] } },
 };
diff --git a/lib/nodets/test/test_driver.ts b/lib/nodets/test/test_driver.ts
index 2c41526..604d5e5 100644
--- a/lib/nodets/test/test_driver.ts
+++ b/lib/nodets/test/test_driver.ts
@@ -17,14 +17,14 @@
  * under the License.
  */
 
- // This is the Node.js test driver for the standard Apache Thrift
- // test service. The driver invokes every function defined in the
- // Thrift Test service with a representative range of parameters.
- //
- // The ThriftTestDriver function requires a client object
- // connected to a server hosting the Thrift Test service and
- // supports an optional callback function which is called with
- // a status message when the test is complete.
+// This is the Node.js test driver for the standard Apache Thrift
+// test service. The driver invokes every function defined in the
+// Thrift Test service with a representative range of parameters.
+//
+// The ThriftTestDriver function requires a client object
+// connected to a server hosting the Thrift Test service and
+// supports an optional callback function which is called with
+// a status message when the test is complete.
 
 import test = require("tape");
 import ttypes = require("./gen-nodejs/ThriftTest_types");
@@ -35,107 +35,118 @@
 var Int64 = require("node-int64");
 import testCases = require("./test-cases");
 
-export function ThriftTestDriver(client: ThriftTest.Client, callback: (status: string) => void) {
-
-  test("NodeJS Style Callback Client Tests", function(assert) {
-
+export function ThriftTestDriver(
+  client: ThriftTest.Client,
+  callback: (status: string) => void,
+) {
+  test("NodeJS Style Callback Client Tests", function (assert) {
     var checkRecursively = makeRecursiveCheck(assert);
 
     function makeAsserter(assertionFn: (a: any, b: any, msg?: string) => void) {
-      return function(c: (string | any)[]) {
+      return function (c: (string | any)[]) {
         var fnName = c[0];
         var expected = c[1];
-        (<any>client)[fnName](expected, function(err: any, actual: any) {
+        (<any>client)[fnName](expected, function (err: any, actual: any) {
           assert.error(err, fnName + ": no callback error");
           assertionFn(actual, expected, fnName);
-        })
+        });
       };
     }
 
     testCases.simple.forEach(makeAsserter(assert.equal));
-    testCases.simpleLoose.forEach(makeAsserter(function(a, e, m){
-      assert.ok(a == e, m);
-    }));
+    testCases.simpleLoose.forEach(
+      makeAsserter(function (a, e, m) {
+        assert.ok(a == e, m);
+      }),
+    );
     testCases.deep.forEach(makeAsserter(assert.deepEqual));
 
-    client.testMapMap(42, function(err, response) {
+    client.testMapMap(42, function (err, response) {
       var expected: typeof response = {
-        "4": {"1":1, "2":2, "3":3, "4":4},
-        "-4": {"-4":-4, "-3":-3, "-2":-2, "-1":-1}
+        "4": { "1": 1, "2": 2, "3": 3, "4": 4 },
+        "-4": { "-4": -4, "-3": -3, "-2": -2, "-1": -1 },
       };
-      assert.error(err, 'testMapMap: no callback error');
+      assert.error(err, "testMapMap: no callback error");
       assert.deepEqual(expected, response, "testMapMap");
     });
 
-    client.testStruct(testCases.out, function(err, response) {
+    client.testStruct(testCases.out, function (err, response) {
       assert.error(err, "testStruct: no callback error");
       checkRecursively(testCases.out, response, "testStruct");
     });
 
-    client.testNest(testCases.out2, function(err, response) {
+    client.testNest(testCases.out2, function (err, response) {
       assert.error(err, "testNest: no callback error");
       checkRecursively(testCases.out2, response, "testNest");
     });
 
-    client.testInsanity(testCases.crazy, function(err, response) {
+    client.testInsanity(testCases.crazy, function (err, response) {
       assert.error(err, "testInsanity: no callback error");
       checkRecursively(testCases.insanity, response, "testInsanity");
     });
 
-    client.testException("TException", function(err, response) {
-      assert.ok(err instanceof TException, 'testException: correct error type');
-      assert.ok(!Boolean(response), 'testException: no response');
+    client.testException("TException", function (err, response) {
+      assert.ok(err instanceof TException, "testException: correct error type");
+      assert.ok(!Boolean(response), "testException: no response");
     });
 
-    client.testException("Xception", function(err, response) {
-      assert.ok(err instanceof ttypes.Xception, 'testException: correct error type');
-      assert.ok(!Boolean(response), 'testException: no response');
-      assert.equal(err.errorCode, 1001, 'testException: correct error code');
-      assert.equal('Xception', err.message, 'testException: correct error message');
+    client.testException("Xception", function (err, response) {
+      assert.ok(
+        err instanceof ttypes.Xception,
+        "testException: correct error type",
+      );
+      assert.ok(!Boolean(response), "testException: no response");
+      assert.equal(err.errorCode, 1001, "testException: correct error code");
+      assert.equal(
+        "Xception",
+        err.message,
+        "testException: correct error message",
+      );
     });
 
-    client.testException("no Exception", function(err, response) {
-      assert.error(err, 'testException: no callback error');
-      assert.ok(!Boolean(response), 'testException: no response');
+    client.testException("no Exception", function (err, response) {
+      assert.error(err, "testException: no callback error");
+      assert.ok(!Boolean(response), "testException: no response");
     });
 
-    client.testOneway(0, function(err, response) {
-      assert.error(err, 'testOneway: no callback error');
-      assert.strictEqual(response, undefined, 'testOneway: void response');
+    client.testOneway(0, function (err, response) {
+      assert.error(err, "testOneway: no callback error");
+      assert.strictEqual(response, undefined, "testOneway: void response");
     });
 
-    checkOffByOne(function(done) {
-      client.testI32(-1, function(err, response) {
+    checkOffByOne(function (done) {
+      client.testI32(-1, function (err, response) {
         assert.error(err, "checkOffByOne: no callback error");
         assert.equal(-1, response);
         assert.end();
         done();
       });
     }, callback);
-
   });
-};
+}
 
-export function ThriftTestDriverPromise(client: ThriftTest.Client, callback: (status: string) => void) {
-
-  test("Q Promise Client Tests", function(assert) {
-
+export function ThriftTestDriverPromise(
+  client: ThriftTest.Client,
+  callback: (status: string) => void,
+) {
+  test("Q Promise Client Tests", function (assert) {
     var checkRecursively = makeRecursiveCheck(assert);
 
     function fail(msg: string) {
-      return function(error, response) {
+      return function (error, response) {
         if (error !== null) {
           assert.fail(msg);
         }
-      }
+      };
     }
 
     function makeAsserter(assertionFn: (a: any, b: any, msg?: string) => void) {
-      return function(c: (string | any)[]) {
+      return function (c: (string | any)[]) {
         var fnName = c[0];
         var expected = c[1];
-        (<any>client)[fnName](expected)
-          .then(function(actual: any) {
+        (<any>client)
+          [fnName](expected)
+          .then(function (actual: any) {
             assertionFn(actual, expected, fnName);
           })
           .fail(fail("fnName"));
@@ -143,73 +154,73 @@
     }
 
     testCases.simple.forEach(makeAsserter(assert.equal));
-    testCases.simpleLoose.forEach(makeAsserter(function(a, e, m){
-      assert.ok(a == e, m);
-    }));
+    testCases.simpleLoose.forEach(
+      makeAsserter(function (a, e, m) {
+        assert.ok(a == e, m);
+      }),
+    );
     testCases.deep.forEach(makeAsserter(assert.deepEqual));
 
     Q.resolve(client.testStruct(testCases.out))
-      .then(function(response) {
+      .then(function (response) {
         checkRecursively(testCases.out, response, "testStruct");
       })
       .fail(fail("testStruct"));
 
     Q.resolve(client.testNest(testCases.out2))
-      .then(function(response) {
+      .then(function (response) {
         checkRecursively(testCases.out2, response, "testNest");
       })
       .fail(fail("testNest"));
 
     Q.resolve(client.testInsanity(testCases.crazy))
-      .then(function(response) {
+      .then(function (response) {
         checkRecursively(testCases.insanity, response, "testInsanity");
       })
       .fail(fail("testInsanity"));
 
     Q.resolve(client.testException("TException"))
-      .then(function(response) {
+      .then(function (response) {
         fail("testException: TException");
       })
-      .fail(function(err) {
+      .fail(function (err) {
         assert.ok(err instanceof TException);
       });
 
     Q.resolve(client.testException("Xception"))
-      .then(function(response) {
+      .then(function (response) {
         fail("testException: Xception");
       })
-      .fail(function(err) {
+      .fail(function (err) {
         assert.ok(err instanceof ttypes.Xception);
         assert.equal(err.errorCode, 1001);
         assert.equal("Xception", err.message);
       });
 
     Q.resolve(client.testException("no Exception"))
-      .then(function(response) {
+      .then(function (response) {
         assert.equal(undefined, response); //void
       })
       .fail(fail("testException"));
 
     client.testOneway(0, fail("testOneway: should not answer"));
 
-    checkOffByOne(function(done) {
+    checkOffByOne(function (done) {
       Q.resolve(client.testI32(-1))
-        .then(function(response) {
-            assert.equal(-1, response);
-            assert.end();
-            done();
+        .then(function (response) {
+          assert.equal(-1, response);
+          assert.end();
+          done();
         })
         .fail(fail("checkOffByOne"));
     }, callback);
   });
-};
-
+}
 
 // Helper Functions
 // =========================================================
 
 function makeRecursiveCheck(assert: test.Test) {
-
   return function (map1: any, map2: any, msg: string) {
     var equal = true;
 
@@ -218,30 +229,37 @@
     assert.ok(equal, msg);
 
     // deepEqual doesn't work with fields using node-int64
-    function checkRecursively(map1: any, map2: any) : boolean {
+    function checkRecursively(map1: any, map2: any): boolean {
       if (!(typeof map1 !== "function" && typeof map2 !== "function")) {
         return false;
       }
       if (!map1 || typeof map1 !== "object") {
         //Handle int64 types (which use node-int64 in Node.js JavaScript)
-        if ((typeof map1 === "number") && (typeof map2 === "object") &&
-            (map2.buffer) && (map2.buffer instanceof Buffer) && (map2.buffer.length === 8)) {
+        if (
+          typeof map1 === "number" &&
+          typeof map2 === "object" &&
+          map2.buffer &&
+          map2.buffer instanceof Buffer &&
+          map2.buffer.length === 8
+        ) {
           var n = new Int64(map2.buffer);
           return map1 === n.toNumber();
         } else {
           return map1 == map2;
         }
       } else {
-        return Object.keys(map1).every(function(key) {
+        return Object.keys(map1).every(function (key) {
           return checkRecursively(map1[key], map2[key]);
         });
       }
     }
-  }
+  };
 }
 
-function checkOffByOne(done: (callback: () => void) => void, callback: (message: string) => void) {
-
+function checkOffByOne(
+  done: (callback: () => void) => void,
+  callback: (message: string) => void,
+) {
   var retry_limit = 30;
   var retry_interval = 100;
   var test_complete = false;
@@ -256,20 +274,23 @@
    * Because this is the last test against the server, when it completes
    * the entire suite is complete by definition (the tests run serially).
    */
-  done(function() {
+  done(function () {
     test_complete = true;
   });
 
   //We wait up to retry_limit * retry_interval for the test suite to complete
   function TestForCompletion() {
-    if(test_complete && callback) {
+    if (test_complete && callback) {
       callback("Server successfully tested!");
     } else {
       if (++retrys < retry_limit) {
         setTimeout(TestForCompletion, retry_interval);
       } else if (callback) {
-        callback("Server test failed to complete after " +
-                 (retry_limit * retry_interval / 1000) + " seconds");
+        callback(
+          "Server test failed to complete after " +
+            (retry_limit * retry_interval) / 1000 +
+            " seconds",
+        );
       }
     }
   }
diff --git a/lib/nodets/test/test_handler.ts b/lib/nodets/test/test_handler.ts
index 996c32a..823b4e7 100644
--- a/lib/nodets/test/test_handler.ts
+++ b/lib/nodets/test/test_handler.ts
@@ -26,7 +26,6 @@
 import Q = require("q");
 import Int64 = require("node-int64");
 
-
 export class SyncThriftTestHandler {
   testVoid(): Q.IPromise<void> {
     //console.log('testVoid()');
@@ -35,9 +34,9 @@
   testMapMap(hello: number) {
     //console.log('testMapMap(' + hello + ')');
 
-    var mapmap: {[key: number]: {[key: number]: number; }} = [];
-    var pos: {[key: number]: number; } = [];
-    var neg: {[key: number]: number; } = [];
+    var mapmap: { [key: number]: { [key: number]: number } } = [];
+    var pos: { [key: number]: number } = [];
+    var neg: { [key: number]: number } = [];
     for (var i = 1; i < 5; i++) {
       pos[i] = i;
       neg[-i] = -i;
@@ -47,53 +46,60 @@
 
     return Q.resolve(mapmap);
   }
-  testInsanity(argument: ttypes.Insanity): Q.IPromise<{ [k: number]: any; }> {
-    const first_map: { [k: number]: any; } = [];
-    const second_map: { [k: number]: any; } = [];
-  
+  testInsanity(argument: ttypes.Insanity): Q.IPromise<{ [k: number]: any }> {
+    const first_map: { [k: number]: any } = [];
+    const second_map: { [k: number]: any } = [];
+
     first_map[ttypes.Numberz.TWO] = argument;
     first_map[ttypes.Numberz.THREE] = argument;
-  
+
     const looney = new ttypes.Insanity();
     second_map[ttypes.Numberz.SIX] = looney;
-  
-    const insane: { [k: number]: any; } = [];
+
+    const insane: { [k: number]: any } = [];
     insane[1] = first_map;
     insane[2] = second_map;
 
     return Q.resolve(insane);
   }
-  testMulti(arg0: any, arg1: number, arg2: Int64, arg3: { [k: number]: string; }, arg4: ttypes.Numberz, arg5: number) {
+  testMulti(
+    arg0: any,
+    arg1: number,
+    arg2: Int64,
+    arg3: { [k: number]: string },
+    arg4: ttypes.Numberz,
+    arg5: number,
+  ) {
     var hello = new ttypes.Xtruct();
-    hello.string_thing = 'Hello2';
+    hello.string_thing = "Hello2";
     hello.byte_thing = arg0;
     hello.i32_thing = arg1;
     hello.i64_thing = arg2;
     return Q.resolve(hello);
   }
   testException(arg: string): Q.IPromise<void> {
-    if (arg === 'Xception') {
+    if (arg === "Xception") {
       var x = new ttypes.Xception();
       x.errorCode = 1001;
       x.message = arg;
       throw x;
-    } else if (arg === 'TException') {
+    } else if (arg === "TException") {
       throw new Thrift.TException(arg);
     } else {
       return Q.resolve();
     }
   }
   testMultiException(arg0: string, arg1: string) {
-    if (arg0 === ('Xception')) {
+    if (arg0 === "Xception") {
       var x = new ttypes.Xception();
       x.errorCode = 1001;
-      x.message = 'This is an Xception';
+      x.message = "This is an Xception";
       throw x;
-    } else if (arg0 === ('Xception2')) {
+    } else if (arg0 === "Xception2") {
       var x2 = new ttypes.Xception2();
       x2.errorCode = 2002;
       x2.struct_thing = new ttypes.Xtruct();
-      x2.struct_thing.string_thing = 'This is an Xception2';
+      x2.struct_thing.string_thing = "This is an Xception2";
       throw x2;
     }
 
@@ -101,8 +107,7 @@
     res.string_thing = arg1;
     return Q.resolve(res);
   }
-  testOneway(sleepFor: number) {
-  }
+  testOneway(sleepFor: number) {}
 
   testString(thing: string) {
     return Q.resolve(thing);
@@ -131,10 +136,10 @@
   testNest(thing: ttypes.Xtruct2) {
     return Q.resolve(thing);
   }
-  testMap(thing: { [k: number]: number; }) {
+  testMap(thing: { [k: number]: number }) {
     return Q.resolve(thing);
   }
-  testStringMap(thing: { [k: string]: string; }) {
+  testStringMap(thing: { [k: string]: string }) {
     return Q.resolve(thing);
   }
   testSet(thing: number[]) {
@@ -161,13 +166,16 @@
     callback(undefined);
     return Q.resolve();
   }
-  testMapMap(hello: number,
-    callback: (err: any, result: { [k: number]: { [k: number]: number; }; }) => void):
-     Q.IPromise<{ [k: number]: { [k: number]: number; }; }> {
-
-    var mapmap: {[key: number]: {[key: number]: number; }} = [];
-    var pos: {[key: number]: number; } = [];
-    var neg: {[key: number]: number; } = [];
+  testMapMap(
+    hello: number,
+    callback: (
+      err: any,
+      result: { [k: number]: { [k: number]: number } },
+    ) => void,
+  ): Q.IPromise<{ [k: number]: { [k: number]: number } }> {
+    var mapmap: { [key: number]: { [key: number]: number } } = [];
+    var pos: { [key: number]: number } = [];
+    var neg: { [key: number]: number } = [];
     for (var i = 1; i < 5; i++) {
       pos[i] = i;
       neg[-i] = -i;
@@ -178,54 +186,69 @@
     callback(null, mapmap);
     return Q.resolve();
   }
-  testInsanity(argument: ttypes.Insanity, callback?: (err: any, result: { [k: number]: any; }) => void): Q.IPromise<{ [k: number]: any; }> {
-    const first_map: { [k: number]: any; } = [];
-    const second_map: { [k: number]: any; } = [];
-  
+  testInsanity(
+    argument: ttypes.Insanity,
+    callback?: (err: any, result: { [k: number]: any }) => void,
+  ): Q.IPromise<{ [k: number]: any }> {
+    const first_map: { [k: number]: any } = [];
+    const second_map: { [k: number]: any } = [];
+
     first_map[ttypes.Numberz.TWO] = argument;
     first_map[ttypes.Numberz.THREE] = argument;
-  
+
     const looney = new ttypes.Insanity();
     second_map[ttypes.Numberz.SIX] = looney;
-  
-    const insane: { [k: number]: any; } = [];
+
+    const insane: { [k: number]: any } = [];
     insane[1] = first_map;
     insane[2] = second_map;
 
-    if (callback !== undefined){
+    if (callback !== undefined) {
       callback(null, insane);
     }
     return Q.resolve();
   }
-  testMulti(arg0: any, arg1: number, arg2: Int64, arg3: { [k: number]: string; }, arg4: ttypes.Numberz, arg5: number, result: Function): Q.IPromise<ttypes.Xtruct> {
+  testMulti(
+    arg0: any,
+    arg1: number,
+    arg2: Int64,
+    arg3: { [k: number]: string },
+    arg4: ttypes.Numberz,
+    arg5: number,
+    result: Function,
+  ): Q.IPromise<ttypes.Xtruct> {
     var hello = this.syncHandler.testMulti(arg0, arg1, arg2, arg3, arg4, arg5);
-    hello.then(hello => result(null, hello));
+    hello.then((hello) => result(null, hello));
     return Q.resolve();
   }
   testException(arg: string, result: (err: any) => void): Q.IPromise<void> {
-    if (arg === 'Xception') {
+    if (arg === "Xception") {
       var x = new ttypes.Xception();
       x.errorCode = 1001;
       x.message = arg;
       result(x);
-    } else if (arg === 'TException') {
+    } else if (arg === "TException") {
       result(new Thrift.TException(arg));
     } else {
       result(null);
     }
     return Q.resolve();
   }
-  testMultiException(arg0: string, arg1: string, result: (err: any, res?: ttypes.Xtruct) => void): Q.IPromise<ttypes.Xtruct> {
-    if (arg0 === ('Xception')) {
+  testMultiException(
+    arg0: string,
+    arg1: string,
+    result: (err: any, res?: ttypes.Xtruct) => void,
+  ): Q.IPromise<ttypes.Xtruct> {
+    if (arg0 === "Xception") {
       var x = new ttypes.Xception();
       x.errorCode = 1001;
-      x.message = 'This is an Xception';
+      x.message = "This is an Xception";
       result(x);
-    } else if (arg0 === ('Xception2')) {
+    } else if (arg0 === "Xception2") {
       var x2 = new ttypes.Xception2();
       x2.errorCode = 2002;
       x2.struct_thing = new ttypes.Xtruct();
-      x2.struct_thing.string_thing = 'This is an Xception2';
+      x2.struct_thing.string_thing = "This is an Xception2";
       result(x2);
     } else {
       var res = new ttypes.Xtruct();
@@ -237,63 +260,108 @@
   testOneway(sleepFor: number, result: Function) {
     this.syncHandler.testOneway(sleepFor);
   }
-  testString(thing: string, callback: (err: any, result: string) => void): Q.IPromise<string> {
+  testString(
+    thing: string,
+    callback: (err: any, result: string) => void,
+  ): Q.IPromise<string> {
     callback(null, thing);
     return Q.resolve();
   }
-  testByte(thing: number, callback: (err: any, result: number) => void): Q.IPromise<number> {
+  testByte(
+    thing: number,
+    callback: (err: any, result: number) => void,
+  ): Q.IPromise<number> {
     callback(null, thing);
     return Q.resolve();
   }
-  testBool(thing: boolean, callback: (err: any, result: boolean) => void ): Q.IPromise<boolean> {
+  testBool(
+    thing: boolean,
+    callback: (err: any, result: boolean) => void,
+  ): Q.IPromise<boolean> {
     callback(null, thing);
     return Q.resolve();
   }
-  testI32(thing: number, callback: (err: any, result: number) => void): Q.IPromise<number>  {
+  testI32(
+    thing: number,
+    callback: (err: any, result: number) => void,
+  ): Q.IPromise<number> {
     callback(null, thing);
     return Q.resolve();
   }
-  testI64(thing: number, callback: (err: any, result: number) => void): Q.IPromise<number>  {
+  testI64(
+    thing: number,
+    callback: (err: any, result: number) => void,
+  ): Q.IPromise<number> {
     callback(null, thing);
     return Q.resolve();
   }
-  testDouble(thing: number, callback: (err: any, result: number) => void): Q.IPromise<number>  {
+  testDouble(
+    thing: number,
+    callback: (err: any, result: number) => void,
+  ): Q.IPromise<number> {
     callback(null, thing);
     return Q.resolve();
   }
-  testBinary(thing: Buffer, callback: (err: any, result: Buffer) => void): Q.IPromise<Buffer> {
+  testBinary(
+    thing: Buffer,
+    callback: (err: any, result: Buffer) => void,
+  ): Q.IPromise<Buffer> {
     callback(null, thing);
     return Q.resolve();
   }
-  testStruct(thing: ttypes.Xtruct, callback: (err: any, result: ttypes.Xtruct) => void): Q.IPromise<ttypes.Xtruct> {
+  testStruct(
+    thing: ttypes.Xtruct,
+    callback: (err: any, result: ttypes.Xtruct) => void,
+  ): Q.IPromise<ttypes.Xtruct> {
     callback(null, thing);
     return Q.resolve();
   }
-  testNest(thing: ttypes.Xtruct2, callback: (err: any, result: ttypes.Xtruct2) => void): Q.IPromise<ttypes.Xtruct2> {
+  testNest(
+    thing: ttypes.Xtruct2,
+    callback: (err: any, result: ttypes.Xtruct2) => void,
+  ): Q.IPromise<ttypes.Xtruct2> {
     callback(null, thing);
     return Q.resolve();
   }
-  testMap(thing: { [k: number]: number; }, callback: (err: any, result: { [k: number]: number; }) => void): Q.IPromise<{ [k: number]: number; }> {
+  testMap(
+    thing: { [k: number]: number },
+    callback: (err: any, result: { [k: number]: number }) => void,
+  ): Q.IPromise<{ [k: number]: number }> {
     callback(null, thing);
     return Q.resolve();
   }
-  testStringMap(thing: { [k: string]: string; }, callback: (err: any, result: { [k: string]: string; }) => void): Q.IPromise<{ [k: string]: string; }> {
+  testStringMap(
+    thing: { [k: string]: string },
+    callback: (err: any, result: { [k: string]: string }) => void,
+  ): Q.IPromise<{ [k: string]: string }> {
     callback(null, thing);
     return Q.resolve();
   }
-  testSet(thing: number[], callback: (err: any, result: number[]) => void): Q.IPromise<number[]> {
+  testSet(
+    thing: number[],
+    callback: (err: any, result: number[]) => void,
+  ): Q.IPromise<number[]> {
     callback(null, thing);
     return Q.resolve();
   }
-  testList(thing: number[], callback: (err: any, result: number[]) => void): Q.IPromise<number[]> {
+  testList(
+    thing: number[],
+    callback: (err: any, result: number[]) => void,
+  ): Q.IPromise<number[]> {
     callback(null, thing);
     return Q.resolve();
   }
-  testEnum(thing: ttypes.Numberz, callback: (err: any, result: ttypes.Numberz) => void): Q.IPromise<ttypes.Numberz> {
+  testEnum(
+    thing: ttypes.Numberz,
+    callback: (err: any, result: ttypes.Numberz) => void,
+  ): Q.IPromise<ttypes.Numberz> {
     callback(null, thing);
     return Q.resolve();
   }
-  testTypedef(thing: number, callback: (err: any, result: number) => void): Q.IPromise<number> {
+  testTypedef(
+    thing: number,
+    callback: (err: any, result: number) => void,
+  ): Q.IPromise<number> {
     callback(null, thing);
     return Q.resolve();
   }
diff --git a/lib/ts/Gruntfile.js b/lib/ts/Gruntfile.js
index 61ab582..3e4b1c4 100644
--- a/lib/ts/Gruntfile.js
+++ b/lib/ts/Gruntfile.js
@@ -5,55 +5,57 @@
 // Grunt Setup -  npm install  //reads the ./package.json and installs project dependencies
 // Run grunt -    npx grunt  // uses project-local installed version of grunt (from package.json)
 
-module.exports = function(grunt) {
-  'use strict';
+module.exports = function (grunt) {
+  "use strict";
 
   grunt.initConfig({
-    pkg: grunt.file.readJSON('package.json'),
+    pkg: grunt.file.readJSON("package.json"),
     concat: {
       options: {
-        separator: ';'
+        separator: ";",
       },
       dist: {
-        src: ['src/**/*.js'],
-        dest: 'dist/<%= pkg.name %>.js'
-      }
+        src: ["src/**/*.js"],
+        dest: "dist/<%= pkg.name %>.js",
+      },
     },
     shell: {
       InstallThriftJS: {
-        command: 'mkdir -p test/build/ts/lib; cp ../js/src/thrift.js test/build/ts/thrift.js'
+        command:
+          "mkdir -p test/build/ts/lib; cp ../js/src/thrift.js test/build/ts/thrift.js",
       },
       InstallThriftNodeJSDep: {
-        command: 'cd ../..; npm install'
+        command: "cd ../..; npm install",
       },
       InstallTestLibs: {
-        command: 'cd test; ant download_jslibs'
+        command: "cd test; ant download_jslibs",
       },
       ThriftGen: {
         command: [
-          'mkdir -p test/gen-js',
-          '../../compiler/cpp/thrift -gen js:ts --out test/gen-js ../../test/v0.16/ThriftTest.thrift',
-          'mkdir -p test/gen-nodejs',
-          '../../compiler/cpp/thrift -gen js:node,ts --out test/gen-nodejs ../../test/v0.16/ThriftTest.thrift',
-        ].join(' && ')
+          "mkdir -p test/gen-js",
+          "../../compiler/cpp/thrift -gen js:ts --out test/gen-js ../../test/v0.16/ThriftTest.thrift",
+          "mkdir -p test/gen-nodejs",
+          "../../compiler/cpp/thrift -gen js:node,ts --out test/gen-nodejs ../../test/v0.16/ThriftTest.thrift",
+        ].join(" && "),
       },
       ThriftBrowserifyNodeInt64: {
         command: [
-          './node_modules/browserify/bin/cmd.js ./node_modules/node-int64/Int64.js -s Int64 -o test/build/js/lib/Int64.js',
-          './node_modules/browserify/bin/cmd.js ../nodejs/lib/thrift/int64_util.js -s Int64Util -o test/build/js/lib/Int64Util.js',
-          './node_modules/browserify/bin/cmd.js ./node_modules/json-int64/index.js -s JSONInt64 -o test/build/js/lib/JSONInt64.js'
-        ].join(' && ')
+          "./node_modules/browserify/bin/cmd.js ./node_modules/node-int64/Int64.js -s Int64 -o test/build/js/lib/Int64.js",
+          "./node_modules/browserify/bin/cmd.js ../nodejs/lib/thrift/int64_util.js -s Int64Util -o test/build/js/lib/Int64Util.js",
+          "./node_modules/browserify/bin/cmd.js ./node_modules/json-int64/index.js -s JSONInt64 -o test/build/js/lib/JSONInt64.js",
+        ].join(" && "),
       },
       ThriftGenInt64: {
-        command: '../../compiler/cpp/thrift -gen js:ts -o test ../../test/Int64Test.thrift'
+        command:
+          "../../compiler/cpp/thrift -gen js:ts -o test ../../test/Int64Test.thrift",
       },
       ThriftTestServer: {
         options: {
           async: true,
           execOptions: {
             cwd: "./test",
-            env: {NODE_PATH: "../../nodejs/lib:../../../node_modules"}
-          }
+            env: { NODE_PATH: "../../nodejs/lib:../../../node_modules" },
+          },
         },
         command: "node server_http.js",
       },
@@ -61,103 +63,104 @@
         options: {
           execOptions: {
             cwd: "./test",
-          }
+          },
         },
-        command : "../node_modules/typescript/bin/tsc --listFiles --outDir build/ts"
+        command:
+          "../node_modules/typescript/bin/tsc --listFiles --outDir build/ts",
       },
       BrowserifyCompiledTS: {
         command: [
           "./node_modules/browserify/bin/cmd.js test/build/ts/test.js -o test/build/ts/lib/test.js --standalone test",
           "./node_modules/browserify/bin/cmd.js test/build/ts/test-int64.js -o test/build/ts/lib/test-int64.js --standalone testInt64",
-        ].join(" && ")
+        ].join(" && "),
       },
       InstallGeneratedCode: {
         command: [
           "mkdir -p test/build/ts",
-          "cp -r test/gen-js test/build/ts"
-        ].join(" && ")
+          "cp -r test/gen-js test/build/ts",
+        ].join(" && "),
       },
     },
     qunit: {
       ThriftJS: {
         options: {
-          urls: [
-            'http://localhost:8089/test.html'
-          ],
+          urls: ["http://localhost:8089/test.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
           },
-        }
+        },
       },
       ThriftJS_Int64: {
         options: {
-          urls: [
-            'http://localhost:8089/test-int64.html'
-          ],
+          urls: ["http://localhost:8089/test-int64.html"],
           puppeteer: {
             headless: true,
-            args: ['--no-sandbox'],
+            args: ["--no-sandbox"],
             ignoreHTTPSErrors: true,
           },
-        }
+        },
       },
     },
     jshint: {
       // The main Thrift library file. not es6 yet :(
       lib: {
-        src: ['../js/src/**/*.js'],
+        src: ["../js/src/**/*.js"],
       },
       // The test files use es6
       test: {
-        src: ['Gruntfile.js', 'test/*.js'],
+        src: ["Gruntfile.js", "test/*.js"],
         options: {
           esversion: 6,
-        }
+        },
       },
       gen_js_code: {
-        src: ['test/gen-js/*.js'],
+        src: ["test/gen-js/*.js"],
       },
       gen_node_code: {
-        src: ['test/gen-nodejs/*.js'],
+        src: ["test/gen-nodejs/*.js"],
         options: {
           node: true,
-        }
+        },
       },
     },
   });
 
-  grunt.loadNpmTasks('grunt-contrib-jshint');
-  grunt.loadNpmTasks('grunt-contrib-qunit');
-  grunt.loadNpmTasks('grunt-shell-spawn');
+  grunt.loadNpmTasks("grunt-contrib-jshint");
+  grunt.loadNpmTasks("grunt-contrib-qunit");
+  grunt.loadNpmTasks("grunt-shell-spawn");
 
-  grunt.registerTask('wait', 'Wait just one second for the server to start', function () {
-    var done = this.async();
-    setTimeout(function() {
-      done(true);
-    }, 1000);
-  });
+  grunt.registerTask(
+    "wait",
+    "Wait just one second for the server to start",
+    function () {
+      var done = this.async();
+      setTimeout(function () {
+        done(true);
+      }, 1000);
+    },
+  );
 
-  grunt.registerTask('installAndGenerate', [
-    'shell:InstallThriftJS',
-    'shell:InstallThriftNodeJSDep',
-    'shell:ThriftGen',
-    'shell:ThriftBrowserifyNodeInt64',
-    'shell:ThriftGenInt64',
-    'shell:InstallTestLibs',
-    'shell:BuildTS',
-    'shell:InstallGeneratedCode',
-    'shell:BrowserifyCompiledTS',
+  grunt.registerTask("installAndGenerate", [
+    "shell:InstallThriftJS",
+    "shell:InstallThriftNodeJSDep",
+    "shell:ThriftGen",
+    "shell:ThriftBrowserifyNodeInt64",
+    "shell:ThriftGenInt64",
+    "shell:InstallTestLibs",
+    "shell:BuildTS",
+    "shell:InstallGeneratedCode",
+    "shell:BrowserifyCompiledTS",
   ]);
 
-  grunt.registerTask('test', [
-    'installAndGenerate',
-    'jshint',
-    'shell:ThriftTestServer',
-    'wait',
-    'qunit:ThriftJS',
-    'qunit:ThriftJS_Int64',
-    'shell:ThriftTestServer:kill',
+  grunt.registerTask("test", [
+    "installAndGenerate",
+    "jshint",
+    "shell:ThriftTestServer",
+    "wait",
+    "qunit:ThriftJS",
+    "qunit:ThriftJS_Int64",
+    "shell:ThriftTestServer:kill",
   ]);
-  grunt.registerTask('default', ['test']);
+  grunt.registerTask("default", ["test"]);
 };
diff --git a/lib/ts/test/phantom-client.ts b/lib/ts/test/phantom-client.ts
index 5518937..90a532d 100644
--- a/lib/ts/test/phantom-client.ts
+++ b/lib/ts/test/phantom-client.ts
@@ -16,337 +16,360 @@
  * specific language governing permissions and limitations
  * under the License.
  */
- /* jshint -W100 */
+/* jshint -W100 */
 
 import { ThriftTest } from "./gen-js/ThriftTest_types";
 import "./gen-js/ThriftTest";
 var Int64 = require("node-int64");
 var phantom = require("phantom");
 
-const int64_2_pow_60: typeof Int64 = new Int64('1000000000000000');
-const int64_minus_2_pow_60: typeof Int64 = new Int64('f000000000000000');
+const int64_2_pow_60: typeof Int64 = new Int64("1000000000000000");
+const int64_minus_2_pow_60: typeof Int64 = new Int64("f000000000000000");
 
- (function() {
-    'use strict';
-  
-    // Rudimentary test helper functions
-    // TODO: Return error code based on kind of errors rather than throw
-    var ok = function(t, msg) {
-      if (!t) {
-        console.log('*** FAILED ***');
-        throw new Error(msg);
+(function () {
+  "use strict";
+
+  // Rudimentary test helper functions
+  // TODO: Return error code based on kind of errors rather than throw
+  var ok = function (t, msg) {
+    if (!t) {
+      console.log("*** FAILED ***");
+      throw new Error(msg);
+    }
+  };
+  var equal = function (a, b) {
+    if (a !== b) {
+      console.log("*** FAILED ***");
+      throw new Error();
+    }
+  };
+  var test = function (name, f) {
+    console.log("TEST : " + name);
+    f();
+    console.log("OK\n");
+  };
+
+  var parseArgs = function (args) {
+    var skips = ["--transport=http", "--protocol=json"];
+    var opts = {
+      port: "9090",
+      // protocol: 'json',
+    };
+    var keys = {};
+    for (var key in opts) {
+      keys["--" + key + "="] = key;
+    }
+    for (var i in args) {
+      var arg = args[i];
+      if (skips.indexOf(arg) != -1) {
+        continue;
       }
-    };
-    var equal = function(a, b) {
-      if (a !== b) {
-        console.log('*** FAILED ***');
-        throw new Error();
+      var hit = false;
+      for (var k in keys) {
+        if (arg.slice(0, k.length) === k) {
+          opts[keys[k]] = arg.slice(k.length);
+          hit = true;
+          break;
+        }
       }
-    };
-    var test = function(name, f) {
-      console.log('TEST : ' + name);
-      f();
-      console.log('OK\n');
-    };
-  
-    var parseArgs = function(args) {
-      var skips = [
-        '--transport=http',
-        '--protocol=json'
-      ];
-      var opts = {
-        port: '9090'
-        // protocol: 'json',
+      if (!hit) {
+        throw new Error("Unknown argument: " + arg);
+      }
+    }
+    var portAsInt: number = parseInt(opts.port, 10);
+    if (!opts.port || portAsInt < 1 || portAsInt > 65535) {
+      throw new Error("Invalid port number");
+    }
+    return opts;
+  };
+
+  var execute = function () {
+    console.log("### Apache Thrift Javascript standalone test client");
+    console.log("------------------------------------------------------------");
+
+    phantom.page.injectJs("thrift.js");
+    phantom.page.injectJs("gen-js/ThriftTest_types.js");
+    phantom.page.injectJs("gen-js/ThriftTest.js");
+
+    var system = require("system");
+    var opts = parseArgs(system.args.slice(1));
+    var port = opts.port;
+    var transport = new Thrift.Transport(
+      "http://localhost:" + port + "/service",
+    );
+    var protocol = new Thrift.Protocol(transport);
+    var client = new ThriftTest.ThriftTestClient(protocol);
+
+    // TODO: Remove duplicate code with test.js.
+    // all Languages in UTF-8
+    var stringTest =
+      "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhlig, Galego, Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, Bahasa Melayu, مازِرونی, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪Norsk (nynorsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, Occitan, Иронау, Papiamentu, Deitsch, Norfuk / Pitkern, Polski, پنجابی, پښتو, Português, Runa Simi, Rumantsch, Romani, Română, Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, Bân-lâm-gú, 粵語";
+
+    function checkRecursively(map1, map2) {
+      if (typeof map1 !== "function" && typeof map2 !== "function") {
+        if (!map1 || typeof map1 !== "object") {
+          equal(map1, map2);
+        } else {
+          for (var key in map1) {
+            checkRecursively(map1[key], map2[key]);
+          }
+        }
+      }
+    }
+
+    test("Void", function () {
+      equal(client.testVoid(), undefined);
+    });
+    test("Binary (String)", function () {
+      var binary: string = "";
+      for (var v = 255; v >= 0; --v) {
+        binary += String.fromCharCode(v);
+      }
+      equal(client.testBinary(binary), binary);
+    });
+    test("Binary (Uint8Array)", function () {
+      var binary: string = "";
+      for (var v = 255; v >= 0; --v) {
+        binary += String.fromCharCode(v);
+      }
+      var arr = new Uint8Array(binary.length);
+      for (var i = 0; i < binary.length; ++i) {
+        arr[i] = binary[i].charCodeAt(0);
+      }
+      const hexEncodedString = Array.from(arr, function (byte) {
+        return String.fromCharCode(byte);
+      }).join("");
+      equal(client.testBinary(hexEncodedString), binary);
+    });
+    test("String", function () {
+      equal(client.testString(""), "");
+      equal(client.testString(stringTest), stringTest);
+
+      var specialCharacters =
+        'quote: \" backslash:' +
+        " forwardslash-escaped: \/ " +
+        " backspace: \b formfeed: \f newline: \n return: \r tab: " +
+        ' now-all-of-them-together: "\\\/\b\n\r\t' +
+        " now-a-bunch-of-junk: !@#$%&()(&%$#{}{}<><><";
+      equal(client.testString(specialCharacters), specialCharacters);
+    });
+    test("Double", function () {
+      equal(client.testDouble(0), 0);
+      equal(client.testDouble(-1), -1);
+      equal(client.testDouble(3.14), 3.14);
+      equal(client.testDouble(Math.pow(2, 60)), Math.pow(2, 60));
+    });
+    test("Bool", function () {
+      equal(client.testBool(true), true);
+      equal(client.testBool(false), false);
+    });
+    test("I8", function () {
+      equal(client.testByte(0), 0);
+      equal(client.testByte(0x01), 0x01);
+    });
+    test("I32", function () {
+      equal(client.testI32(0), 0);
+      equal(client.testI32(Math.pow(2, 30)), Math.pow(2, 30));
+      equal(client.testI32(-Math.pow(2, 30)), -Math.pow(2, 30));
+    });
+    test("I64", function () {
+      equal(client.testI64(new Int64(0)), 0);
+      equal(client.testI64(int64_2_pow_60), Math.pow(2, 52));
+      equal(client.testI64(int64_minus_2_pow_60), -Math.pow(2, 52));
+    });
+
+    test("Struct", function () {
+      var structTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
+      structTestInput.string_thing = "worked";
+      structTestInput.byte_thing = 0x01;
+      structTestInput.i32_thing = Math.pow(2, 30);
+      structTestInput.i64_thing = int64_2_pow_60;
+
+      var structTestOutput: ThriftTest.Xtruct =
+        client.testStruct(structTestInput);
+
+      equal(structTestOutput.string_thing, structTestInput.string_thing);
+      equal(structTestOutput.byte_thing, structTestInput.byte_thing);
+      equal(structTestOutput.i32_thing, structTestInput.i32_thing);
+      equal(structTestOutput.i64_thing, structTestInput.i64_thing);
+
+      equal(JSON.stringify(structTestOutput), JSON.stringify(structTestInput));
+    });
+
+    test("Nest", function () {
+      var xtrTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
+      xtrTestInput.string_thing = "worked";
+      xtrTestInput.byte_thing = 0x01;
+      xtrTestInput.i32_thing = Math.pow(2, 30);
+      xtrTestInput.i64_thing = int64_2_pow_60;
+
+      var nestTestInput: ThriftTest.Xtruct2 = new ThriftTest.Xtruct2();
+      nestTestInput.byte_thing = 0x02;
+      nestTestInput.struct_thing = xtrTestInput;
+      nestTestInput.i32_thing = Math.pow(2, 15);
+
+      var nestTestOutput = client.testNest(nestTestInput);
+
+      equal(nestTestOutput.byte_thing, nestTestInput.byte_thing);
+      equal(
+        nestTestOutput.struct_thing.string_thing,
+        nestTestInput.struct_thing.string_thing,
+      );
+      equal(
+        nestTestOutput.struct_thing.byte_thing,
+        nestTestInput.struct_thing.byte_thing,
+      );
+      equal(
+        nestTestOutput.struct_thing.i32_thing,
+        nestTestInput.struct_thing.i32_thing,
+      );
+      equal(
+        nestTestOutput.struct_thing.i64_thing,
+        nestTestInput.struct_thing.i64_thing,
+      );
+      equal(nestTestOutput.i32_thing, nestTestInput.i32_thing);
+
+      equal(JSON.stringify(nestTestOutput), JSON.stringify(nestTestInput));
+    });
+
+    test("Map", function () {
+      var mapTestInput: { [k: number]: number } = { 7: 77, 8: 88, 9: 99 };
+
+      var mapTestOutput: { [k: number]: number } = client.testMap(mapTestInput);
+
+      for (var key in mapTestOutput) {
+        equal(mapTestOutput[key], mapTestInput[key]);
+      }
+    });
+
+    test("StringMap", function () {
+      var mapTestInput: { [k: string]: string } = {
+        a: "123",
+        "a b": "with spaces ",
+        same: "same",
+        "0": "numeric key",
+        longValue: stringTest,
+        stringTest: "long key",
       };
-      var keys = {};
-      for (var key in opts) {
-        keys['--' + key + '='] = key;
+
+      var mapTestOutput: { [k: string]: string } =
+        client.testStringMap(mapTestInput);
+
+      for (var key in mapTestOutput) {
+        equal(mapTestOutput[key], mapTestInput[key]);
       }
-      for (var i in args) {
-        var arg = args[i];
-        if (skips.indexOf(arg) != -1) {
-          continue;
-        }
-        var hit = false;
-        for (var k in keys) {
-          if (arg.slice(0, k.length) === k) {
-            opts[keys[k]] = arg.slice(k.length);
-            hit = true;
-            break;
-          }
-        }
-        if (!hit) {
-          throw new Error('Unknown argument: ' + arg);
+    });
+
+    test("Set", function () {
+      var setTestInput: number[] = [1, 2, 3];
+      ok(client.testSet(setTestInput), setTestInput);
+    });
+
+    test("List", function () {
+      var listTestInput: number[] = [1, 2, 3];
+      ok(client.testList(listTestInput), listTestInput);
+    });
+
+    test("Enum", function () {
+      equal(client.testEnum(ThriftTest.Numberz.ONE), ThriftTest.Numberz.ONE);
+    });
+
+    test("TypeDef", function () {
+      equal(client.testTypedef(new Int64(69)), 69);
+    });
+
+    test("MapMap", function () {
+      var mapMapTestExpectedResult: { [K: number]: { [k: number]: number } } = {
+        "4": { "1": 1, "2": 2, "3": 3, "4": 4 },
+        "-4": { "-4": -4, "-3": -3, "-2": -2, "-1": -1 },
+      };
+
+      var mapMapTestOutput = client.testMapMap(1);
+
+      for (var key in mapMapTestOutput) {
+        for (var key2 in mapMapTestOutput[key]) {
+          equal(
+            mapMapTestOutput[key][key2],
+            mapMapTestExpectedResult[key][key2],
+          );
         }
       }
-      var portAsInt: number = parseInt(opts.port, 10);
-      if (!opts.port || portAsInt < 1 || portAsInt > 65535) {
-        throw new Error('Invalid port number');
+
+      checkRecursively(mapMapTestOutput, mapMapTestExpectedResult);
+    });
+
+    test("Xception", function () {
+      try {
+        client.testException("Xception");
+        ok(false, "expected an exception but there was no exception");
+      } catch (e) {
+        equal(e.errorCode, 1001);
+        equal(e.message, "Xception");
       }
-      return opts;
-    };
-  
-    var execute = function() {
-      console.log('### Apache Thrift Javascript standalone test client');
-      console.log('------------------------------------------------------------');
-  
-      phantom.page.injectJs('thrift.js');
-      phantom.page.injectJs('gen-js/ThriftTest_types.js');
-      phantom.page.injectJs('gen-js/ThriftTest.js');
-  
-      var system = require('system');
-      var opts = parseArgs(system.args.slice(1));
-      var port = opts.port;
-      var transport = new Thrift.Transport('http://localhost:' + port + '/service');
-      var protocol = new Thrift.Protocol(transport);
-      var client = new ThriftTest.ThriftTestClient(protocol);
-  
-  
-      // TODO: Remove duplicate code with test.js.
-      // all Languages in UTF-8
-      var stringTest = "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhlig, Galego, Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, Bahasa Melayu, مازِرونی, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪Norsk (nynorsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, Occitan, Иронау, Papiamentu, Deitsch, Norfuk / Pitkern, Polski, پنجابی, پښتو, Português, Runa Simi, Rumantsch, Romani, Română, Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, Bân-lâm-gú, 粵語";
-  
-      function checkRecursively(map1, map2) {
-        if (typeof map1 !== 'function' && typeof map2 !== 'function') {
-          if (!map1 || typeof map1 !== 'object') {
-            equal(map1, map2);
-          } else {
-            for (var key in map1) {
-              checkRecursively(map1[key], map2[key]);
-            }
-          }
-        }
+    });
+
+    test("no Exception", function () {
+      try {
+        client.testException("no Exception");
+      } catch (e) {
+        ok(false, "expected no exception but here was an exception");
       }
-  
-      test('Void', function() {
-        equal(client.testVoid(), undefined);
-      });
-      test('Binary (String)', function() {
-        var binary: string = '';
-        for (var v = 255; v >= 0; --v) {
-          binary += String.fromCharCode(v);
-        }
-        equal(client.testBinary(binary), binary);
-      });
-      test('Binary (Uint8Array)', function() {
-        var binary: string = '';
-        for (var v = 255; v >= 0; --v) {
-          binary += String.fromCharCode(v);
-        }
-        var arr = new Uint8Array(binary.length);
-        for (var i = 0; i < binary.length; ++i) {
-          arr[i] = binary[i].charCodeAt(0);
-        }
-        const hexEncodedString = Array.from(arr, function(byte) {
-            return String.fromCharCode(byte);
-        }).join('')
-        equal(client.testBinary(hexEncodedString), binary);
-      });
-      test('String', function() {
-        equal(client.testString(''), '');
-        equal(client.testString(stringTest), stringTest);
-  
-        var specialCharacters = 'quote: \" backslash:' +
-          ' forwardslash-escaped: \/ ' +
-            ' backspace: \b formfeed: \f newline: \n return: \r tab: ' +
-              ' now-all-of-them-together: "\\\/\b\n\r\t' +
-                ' now-a-bunch-of-junk: !@#$%&()(&%$#{}{}<><><';
-                equal(client.testString(specialCharacters), specialCharacters);
-      });
-      test('Double', function() {
-        equal(client.testDouble(0), 0);
-        equal(client.testDouble(-1), -1);
-        equal(client.testDouble(3.14), 3.14);
-        equal(client.testDouble(Math.pow(2, 60)), Math.pow(2, 60));
-      });
-      test('Bool', function() {
-        equal(client.testBool(true), true);
-        equal(client.testBool(false), false);
-      });
-      test('I8', function() {
-        equal(client.testByte(0), 0);
-        equal(client.testByte(0x01), 0x01);
-      });
-      test('I32', function() {
-        equal(client.testI32(0), 0);
-        equal(client.testI32(Math.pow(2, 30)), Math.pow(2, 30));
-        equal(client.testI32(-Math.pow(2, 30)), -Math.pow(2, 30));
-      });
-      test('I64', function() {
-        equal(client.testI64(new Int64(0)), 0);
-        equal(client.testI64(int64_2_pow_60), Math.pow(2, 52));
-        equal(client.testI64(int64_minus_2_pow_60), -Math.pow(2, 52));
-      });
-  
-      test('Struct', function() {
-        var structTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
-        structTestInput.string_thing = 'worked';
-        structTestInput.byte_thing = 0x01;
-        structTestInput.i32_thing = Math.pow(2, 30);
-        structTestInput.i64_thing = int64_2_pow_60;
-  
-        var structTestOutput: ThriftTest.Xtruct = client.testStruct(structTestInput);
-  
-        equal(structTestOutput.string_thing, structTestInput.string_thing);
-        equal(structTestOutput.byte_thing, structTestInput.byte_thing);
-        equal(structTestOutput.i32_thing, structTestInput.i32_thing);
-        equal(structTestOutput.i64_thing, structTestInput.i64_thing);
-  
-        equal(JSON.stringify(structTestOutput), JSON.stringify(structTestInput));
-      });
-  
-      test('Nest', function() {
-        var xtrTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
-        xtrTestInput.string_thing = 'worked';
-        xtrTestInput.byte_thing = 0x01;
-        xtrTestInput.i32_thing = Math.pow(2, 30);
-        xtrTestInput.i64_thing = int64_2_pow_60;
-  
-        var nestTestInput: ThriftTest.Xtruct2 = new ThriftTest.Xtruct2();
-        nestTestInput.byte_thing = 0x02;
-        nestTestInput.struct_thing = xtrTestInput;
-        nestTestInput.i32_thing = Math.pow(2, 15);
-  
-        var nestTestOutput = client.testNest(nestTestInput);
-  
-        equal(nestTestOutput.byte_thing, nestTestInput.byte_thing);
-        equal(nestTestOutput.struct_thing.string_thing, nestTestInput.struct_thing.string_thing);
-        equal(nestTestOutput.struct_thing.byte_thing, nestTestInput.struct_thing.byte_thing);
-        equal(nestTestOutput.struct_thing.i32_thing, nestTestInput.struct_thing.i32_thing);
-        equal(nestTestOutput.struct_thing.i64_thing, nestTestInput.struct_thing.i64_thing);
-        equal(nestTestOutput.i32_thing, nestTestInput.i32_thing);
-  
-        equal(JSON.stringify(nestTestOutput), JSON.stringify(nestTestInput));
-      });
-  
-      test('Map', function() {
-        var mapTestInput: {[k: number]: number;} = {7: 77, 8: 88, 9: 99};
-  
-        var mapTestOutput: {[k: number]: number;} = client.testMap(mapTestInput);
-  
-        for (var key in mapTestOutput) {
-          equal(mapTestOutput[key], mapTestInput[key]);
-        }
-      });
-  
-      test('StringMap', function() {
-        var mapTestInput: {[k: string]: string;} = {
-          'a': '123', 'a b': 'with spaces ', 'same': 'same', '0': 'numeric key',
-          'longValue': stringTest, stringTest: 'long key'
-        };
-  
-        var mapTestOutput: {[k: string]: string;} = client.testStringMap(mapTestInput);
-  
-        for (var key in mapTestOutput) {
-          equal(mapTestOutput[key], mapTestInput[key]);
-        }
-      });
-  
-      test('Set', function() {
-        var setTestInput: number[] = [1, 2, 3];
-        ok(client.testSet(setTestInput), setTestInput);
-      });
-  
-      test('List', function() {
-        var listTestInput: number[] = [1, 2, 3];
-        ok(client.testList(listTestInput), listTestInput);
-      });
-  
-      test('Enum', function() {
-        equal(client.testEnum(ThriftTest.Numberz.ONE), ThriftTest.Numberz.ONE);
-      });
-  
-      test('TypeDef', function() {
-        equal(client.testTypedef(new Int64(69)), 69);
-      });
-  
-      test('MapMap', function() {
-        var mapMapTestExpectedResult: {[K: number]: {[k: number]: number}} = {
-          '4': {'1': 1, '2': 2, '3': 3, '4': 4},
-          '-4': {'-4': -4, '-3': -3, '-2': -2, '-1': -1}
-        };
-  
-        var mapMapTestOutput = client.testMapMap(1);
-  
-  
-        for (var key in mapMapTestOutput) {
-          for (var key2 in mapMapTestOutput[key]) {
-            equal(mapMapTestOutput[key][key2], mapMapTestExpectedResult[key][key2]);
-          }
-        }
-  
-        checkRecursively(mapMapTestOutput, mapMapTestExpectedResult);
-      });
-  
-      test('Xception', function() {
-        try {
-          client.testException('Xception');
-          ok(false, "expected an exception but there was no exception");
-        } catch (e) {
-          equal(e.errorCode, 1001);
-          equal(e.message, 'Xception');
-        }
-      });
-  
-      test('no Exception', function() {
-        try {
-          client.testException('no Exception');
-        } catch (e) {
-          ok(false, "expected no exception but here was an exception");
-        }
-      });
-  
-      test('TException', function() {
-        try {
-          client.testException('TException');
-          ok(false, "expected an exception but there was no exception");
-        } catch (e) {
-          ok(ok, "succesfully got exception");
-        }
-      });
-  
-      const crazy: ThriftTest.Insanity = {
-        'userMap': { '5': new Int64(5), '8': new Int64(8) },
-        'xtructs': [{
-            'string_thing': 'Goodbye4',
-            'byte_thing': 4,
-            'i32_thing': 4,
-            'i64_thing': new Int64(4)
+    });
+
+    test("TException", function () {
+      try {
+        client.testException("TException");
+        ok(false, "expected an exception but there was no exception");
+      } catch (e) {
+        ok(ok, "succesfully got exception");
+      }
+    });
+
+    const crazy: ThriftTest.Insanity = {
+      userMap: { "5": new Int64(5), "8": new Int64(8) },
+      xtructs: [
+        {
+          string_thing: "Goodbye4",
+          byte_thing: 4,
+          i32_thing: 4,
+          i64_thing: new Int64(4),
         },
         {
-            'string_thing': 'Hello2',
-            'byte_thing': 2,
-            'i32_thing': 2,
-            'i64_thing': new Int64(2)
-        }]
+          string_thing: "Hello2",
+          byte_thing: 2,
+          i32_thing: 2,
+          i64_thing: new Int64(2),
+        },
+      ],
     };
-      test('Insanity', function() {
-        const insanity: {[k: number]: (ThriftTest.Insanity | {[k:number]: ThriftTest.Insanity})} = {
-            '1': {
-                '2': crazy,
-                '3': crazy
-            },
-            '2': { '6': new ThriftTest.Insanity() }
-        };
-        var res = client.testInsanity(new ThriftTest.Insanity(crazy));
-        ok(res, JSON.stringify(res));
-        ok(insanity, JSON.stringify(insanity));
-  
-        checkRecursively(res, insanity);
-      });
-  
-      console.log('------------------------------------------------------------');
-      console.log('### All tests succeeded.');
-      return 0;
-    };
-  
-    try {
-      var ret = execute();
-      phantom.exit(ret);
-    } catch (err) {
-      // Catch all and exit to avoid hang.
-      console.error(err);
-      phantom.exit(1);
-    }
-  })();
-  
\ No newline at end of file
+    test("Insanity", function () {
+      const insanity: {
+        [k: number]: ThriftTest.Insanity | { [k: number]: ThriftTest.Insanity };
+      } = {
+        "1": {
+          "2": crazy,
+          "3": crazy,
+        },
+        "2": { "6": new ThriftTest.Insanity() },
+      };
+      var res = client.testInsanity(new ThriftTest.Insanity(crazy));
+      ok(res, JSON.stringify(res));
+      ok(insanity, JSON.stringify(insanity));
+
+      checkRecursively(res, insanity);
+    });
+
+    console.log("------------------------------------------------------------");
+    console.log("### All tests succeeded.");
+    return 0;
+  };
+
+  try {
+    var ret = execute();
+    phantom.exit(ret);
+  } catch (err) {
+    // Catch all and exit to avoid hang.
+    console.error(err);
+    phantom.exit(1);
+  }
+})();
diff --git a/lib/ts/test/server_http.js b/lib/ts/test/server_http.js
index 8380c3a..662a0a7 100644
--- a/lib/ts/test/server_http.js
+++ b/lib/ts/test/server_http.js
@@ -28,28 +28,30 @@
 //  for the es6 environment or for pre-es6 environment.
 //
 
-const thrift = require('../../nodejs/lib/thrift');
-const es6Mode = process.argv.includes('--es6');
-const genFolder = es6Mode ? 'gen-nodejs-es6' : 'gen-nodejs';
+const thrift = require("../../nodejs/lib/thrift");
+const es6Mode = process.argv.includes("--es6");
+const genFolder = es6Mode ? "gen-nodejs-es6" : "gen-nodejs";
 const ThriftTestSvc = require(`./${genFolder}/ThriftTest.js`);
-const ThriftTestHandler = require('./test_handler').ThriftTestHandler;
+const ThriftTestHandler = require("./test_handler").ThriftTestHandler;
 
 const ThriftTestSvcOpt = {
-	transport: thrift.TBufferedTransport,
-	protocol: thrift.TJSONProtocol,
-	processor: ThriftTestSvc,
-	handler: ThriftTestHandler
+  transport: thrift.TBufferedTransport,
+  protocol: thrift.TJSONProtocol,
+  processor: ThriftTestSvc,
+  handler: ThriftTestHandler,
 };
 
 const ThriftWebServerOptions = {
-	files: __dirname,
-	services: {
-		'/service': ThriftTestSvcOpt
-	}
+  files: __dirname,
+  services: {
+    "/service": ThriftTestSvcOpt,
+  },
 };
 
 const server = thrift.createWebServer(ThriftWebServerOptions);
 const port = es6Mode ? 8088 : 8089;
 server.listen(port);
 console.log(`Serving files from: ${__dirname}`);
-console.log(`Http/Thrift Server (ES6 mode ${es6Mode}) running on port: ${port}`);
+console.log(
+  `Http/Thrift Server (ES6 mode ${es6Mode}) running on port: ${port}`,
+);
diff --git a/lib/ts/test/test-int64.ts b/lib/ts/test/test-int64.ts
index 254d8d7..10e5946 100644
--- a/lib/ts/test/test-int64.ts
+++ b/lib/ts/test/test-int64.ts
@@ -16,86 +16,90 @@
  * specific language governing permissions and limitations
  * under the License.
  */
- /* jshint -W100 */
+/* jshint -W100 */
 
 var Int64 = require("node-int64");
 var JSONInt64 = require("json-int64");
 import { Int64Test } from "./gen-js/Int64Test_types";
 
-
 // Work around for old API used by QUnitAdapter of jsTestDriver
-if (typeof QUnit.log == 'function') {
+if (typeof QUnit.log == "function") {
   // When using real QUnit (fron PhantomJS) log failures to console
-  QUnit.log(function(details) {
+  QUnit.log(function (details) {
     if (!details.result) {
-      console.log('======== FAIL ========');
-      console.log('TestName: ' + details.name);
+      console.log("======== FAIL ========");
+      console.log("TestName: " + details.name);
       if (details.message) console.log(details.message);
-      console.log('Expected: ' + details.expected);
-      console.log('Actual  : ' + details.actual);
-      console.log('======================');
+      console.log("Expected: " + details.expected);
+      console.log("Actual  : " + details.actual);
+      console.log("======================");
     }
   });
 }
 
-QUnit.module('Int64');
+QUnit.module("Int64");
 
-  QUnit.test('Int64', function(assert) {
-    console.log('Int64 test -- starts');
-    const EXPECTED_SMALL_INT64_AS_NUMBER: number = 42;
-    const EXPECTED_SMALL_INT64: typeof Int64 = new Int64(42);
-    const EXPECTED_MAX_JS_SAFE_INT64: typeof Int64 = new Int64(Number.MAX_SAFE_INTEGER);
-    const EXPECTED_MIN_JS_SAFE_INT64: typeof Int64 = new Int64(Number.MIN_SAFE_INTEGER);
-    const EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64: typeof Int64 = new Int64("0020000000000000"); // hex-encoded
-    const EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64: typeof Int64 = new Int64("ffe0000000000000"); // hex-encoded 2's complement
-    const EXPECTED_MAX_SIGNED_INT64: typeof Int64 = new Int64("7fffffffffffffff"); // hex-encoded
-    const EXPECTED_MIN_SIGNED_INT64: typeof Int64 = new Int64("8000000000000000"); // hex-encoded 2's complement
-    const EXPECTED_INT64_LIST = [
-      EXPECTED_SMALL_INT64,
-      EXPECTED_MAX_JS_SAFE_INT64,
-      EXPECTED_MIN_JS_SAFE_INT64,
-      EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64,
-      EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64,
-      EXPECTED_MAX_SIGNED_INT64,
-      EXPECTED_MIN_SIGNED_INT64
-    ];
-    assert.ok(EXPECTED_SMALL_INT64.equals(Int64Test.SMALL_INT64));
-    assert.ok(EXPECTED_MAX_JS_SAFE_INT64.equals(Int64Test.MAX_JS_SAFE_INT64));
-    assert.ok(EXPECTED_MIN_JS_SAFE_INT64.equals(Int64Test.MIN_JS_SAFE_INT64));
+QUnit.test("Int64", function (assert) {
+  console.log("Int64 test -- starts");
+  const EXPECTED_SMALL_INT64_AS_NUMBER: number = 42;
+  const EXPECTED_SMALL_INT64: typeof Int64 = new Int64(42);
+  const EXPECTED_MAX_JS_SAFE_INT64: typeof Int64 = new Int64(
+    Number.MAX_SAFE_INTEGER,
+  );
+  const EXPECTED_MIN_JS_SAFE_INT64: typeof Int64 = new Int64(
+    Number.MIN_SAFE_INTEGER,
+  );
+  const EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64: typeof Int64 = new Int64(
+    "0020000000000000",
+  ); // hex-encoded
+  const EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64: typeof Int64 = new Int64(
+    "ffe0000000000000",
+  ); // hex-encoded 2's complement
+  const EXPECTED_MAX_SIGNED_INT64: typeof Int64 = new Int64("7fffffffffffffff"); // hex-encoded
+  const EXPECTED_MIN_SIGNED_INT64: typeof Int64 = new Int64("8000000000000000"); // hex-encoded 2's complement
+  const EXPECTED_INT64_LIST = [
+    EXPECTED_SMALL_INT64,
+    EXPECTED_MAX_JS_SAFE_INT64,
+    EXPECTED_MIN_JS_SAFE_INT64,
+    EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64,
+    EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64,
+    EXPECTED_MAX_SIGNED_INT64,
+    EXPECTED_MIN_SIGNED_INT64,
+  ];
+  assert.ok(EXPECTED_SMALL_INT64.equals(Int64Test.SMALL_INT64));
+  assert.ok(EXPECTED_MAX_JS_SAFE_INT64.equals(Int64Test.MAX_JS_SAFE_INT64));
+  assert.ok(EXPECTED_MIN_JS_SAFE_INT64.equals(Int64Test.MIN_JS_SAFE_INT64));
+  assert.ok(
+    EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64.equals(
+      Int64Test.MAX_JS_SAFE_PLUS_ONE_INT64,
+    ),
+  );
+  assert.ok(
+    EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64.equals(
+      Int64Test.MIN_JS_SAFE_MINUS_ONE_INT64,
+    ),
+  );
+  assert.ok(EXPECTED_MAX_SIGNED_INT64.equals(Int64Test.MAX_SIGNED_INT64));
+  assert.ok(EXPECTED_MIN_SIGNED_INT64.equals(Int64Test.MIN_SIGNED_INT64));
+  assert.equal(
+    EXPECTED_SMALL_INT64_AS_NUMBER,
+    Int64Test.SMALL_INT64.toNumber(),
+  );
+  assert.equal(Number.MAX_SAFE_INTEGER, Int64Test.MAX_JS_SAFE_INT64.toNumber());
+  assert.equal(Number.MIN_SAFE_INTEGER, Int64Test.MIN_JS_SAFE_INT64.toNumber());
+
+  for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
+    assert.ok(EXPECTED_INT64_LIST[i].equals(Int64Test.INT64_LIST[i]));
+  }
+
+  for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
+    let int64Object = EXPECTED_INT64_LIST[i];
     assert.ok(
-      EXPECTED_MAX_JS_SAFE_PLUS_ONE_INT64.equals(
-        Int64Test.MAX_JS_SAFE_PLUS_ONE_INT64
-      )
+      Int64Test.INT64_2_INT64_MAP[
+        JSONInt64.toDecimalString(int64Object)
+      ].equals(int64Object),
     );
-    assert.ok(
-      EXPECTED_MIN_JS_SAFE_MINUS_ONE_INT64.equals(
-        Int64Test.MIN_JS_SAFE_MINUS_ONE_INT64
-      )
-    );
-    assert.ok(EXPECTED_MAX_SIGNED_INT64.equals(Int64Test.MAX_SIGNED_INT64));
-    assert.ok(EXPECTED_MIN_SIGNED_INT64.equals(Int64Test.MIN_SIGNED_INT64));
-    assert.equal(
-      EXPECTED_SMALL_INT64_AS_NUMBER,
-      Int64Test.SMALL_INT64.toNumber()
-    );
-    assert.equal(
-      Number.MAX_SAFE_INTEGER,
-      Int64Test.MAX_JS_SAFE_INT64.toNumber()
-    );
-    assert.equal(
-      Number.MIN_SAFE_INTEGER,
-      Int64Test.MIN_JS_SAFE_INT64.toNumber()
-    );
+  }
 
-    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
-      assert.ok(EXPECTED_INT64_LIST[i].equals(Int64Test.INT64_LIST[i]));
-    }
-
-    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i){
-      let int64Object = EXPECTED_INT64_LIST[i];
-      assert.ok(Int64Test.INT64_2_INT64_MAP[JSONInt64.toDecimalString(int64Object)].equals(int64Object));
-    }
-
-    console.log('Int64 test -- ends');
-  });
-
+  console.log("Int64 test -- ends");
+});
diff --git a/lib/ts/test/test.ts b/lib/ts/test/test.ts
index 31fdcbf..614461d 100644
--- a/lib/ts/test/test.ts
+++ b/lib/ts/test/test.ts
@@ -7,336 +7,365 @@
 
 const transport: Thrift.Transport = new Thrift.Transport("/service");
 const protocol: Thrift.Protocol = new Thrift.Protocol(transport);
-const client: ThriftTest.ThriftTestClient = new ThriftTest.ThriftTestClient(protocol);
+const client: ThriftTest.ThriftTestClient = new ThriftTest.ThriftTestClient(
+  protocol,
+);
 
-const int64_2_pow_60: typeof Int64 = new Int64('1000000000000000');
-const int64_minus_2_pow_60: typeof Int64 = new Int64('f000000000000000');
+const int64_2_pow_60: typeof Int64 = new Int64("1000000000000000");
+const int64_minus_2_pow_60: typeof Int64 = new Int64("f000000000000000");
 
 // Work around for old API used by QUnitAdapter of jsTestDriver
-if (typeof QUnit.log == 'function') {
-    // When using real QUnit (fron PhantomJS) log failures to console
-    QUnit.log(function(details) {
-        if (!details.result) {
-        console.log('======== FAIL ========');
-        console.log('TestName: ' + details.name);
-        if (details.message) console.log(details.message);
-        console.log('Expected: ' + JSONInt64.stringify(details.expected));
-        console.log('Actual  : ' + JSONInt64.stringify(details.actual));
-        console.log('======================');
-        }
-    });
+if (typeof QUnit.log == "function") {
+  // When using real QUnit (fron PhantomJS) log failures to console
+  QUnit.log(function (details) {
+    if (!details.result) {
+      console.log("======== FAIL ========");
+      console.log("TestName: " + details.name);
+      if (details.message) console.log(details.message);
+      console.log("Expected: " + JSONInt64.stringify(details.expected));
+      console.log("Actual  : " + JSONInt64.stringify(details.actual));
+      console.log("======================");
+    }
+  });
 }
 
 // all Languages in UTF-8
-const stringTest: string = "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhlig, Galego, Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, Bahasa Melayu, مازِرونی, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪Norsk (nynorsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, Occitan, Иронау, Papiamentu, Deitsch, Norfuk / Pitkern, Polski, پنجابی, پښتو, Português, Runa Simi, Rumantsch, Romani, Română, Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, Bân-lâm-gú, 粵語";
-
+const stringTest: string =
+  "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhlig, Galego, Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, Bahasa Melayu, مازِرونی, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪Norsk (nynorsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, Occitan, Иронау, Papiamentu, Deitsch, Norfuk / Pitkern, Polski, پنجابی, پښتو, Português, Runa Simi, Rumantsch, Romani, Română, Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, Bân-lâm-gú, 粵語";
 
 function checkRecursively(assert, map1: Object, map2: Object): void {
-    if (typeof map1 !== 'function' && typeof map2 !== 'function') {
-        if (!map1 || typeof map1 !== 'object') {
-            assert.equal(map1, map2);
-        } else {
-            for (let key in map1) {
-            checkRecursively(assert, map1[key], map2[key]);
-            }
-        }
+  if (typeof map1 !== "function" && typeof map2 !== "function") {
+    if (!map1 || typeof map1 !== "object") {
+      assert.equal(map1, map2);
+    } else {
+      for (let key in map1) {
+        checkRecursively(assert, map1[key], map2[key]);
+      }
     }
+  }
 }
 
+QUnit.module("Base Types");
 
-QUnit.module('Base Types');
+QUnit.test("Void", function (assert) {
+  assert.equal(client.testVoid(), undefined);
+});
+QUnit.test("Binary (String)", function (assert) {
+  let binary: string = "";
+  for (let v = 255; v >= 0; --v) {
+    binary += String.fromCharCode(v);
+  }
+  assert.equal(client.testBinary(binary), binary);
+});
+QUnit.test("Binary (Uint8Array)", function (assert) {
+  let binary: string = "";
+  for (let v = 255; v >= 0; --v) {
+    binary += String.fromCharCode(v);
+  }
+  const arr: Uint8Array = new Uint8Array(binary.length);
+  for (let i = 0; i < binary.length; ++i) {
+    arr[i] = binary[i].charCodeAt(0);
+  }
+  const hexEncodedString = Array.from(arr, function (byte) {
+    return String.fromCharCode(byte);
+  }).join("");
+  assert.equal(client.testBinary(hexEncodedString), binary);
+});
+QUnit.test("String", function (assert) {
+  assert.equal(client.testString(""), "");
+  assert.equal(client.testString(stringTest), stringTest);
 
-    QUnit.test('Void', function(assert) {
-        assert.equal(client.testVoid(), undefined);
-    });
-    QUnit.test('Binary (String)', function(assert) {
-        let binary: string = '';
-        for (let v = 255; v >= 0; --v) {
-            binary += String.fromCharCode(v);
-        }
-        assert.equal(client.testBinary(binary), binary);
-    });
-    QUnit.test('Binary (Uint8Array)', function(assert) {
-        let binary: string = '';
-        for (let v = 255; v >= 0; --v) {
-            binary += String.fromCharCode(v);
-        }
-        const arr: Uint8Array = new Uint8Array(binary.length);
-        for (let i = 0; i < binary.length; ++i) {
-            arr[i] = binary[i].charCodeAt(0);
-        }
-        const hexEncodedString = Array.from(arr, function(byte) {
-            return String.fromCharCode(byte);
-        }).join('')
-        assert.equal(client.testBinary(hexEncodedString), binary);
-    });
-    QUnit.test('String', function(assert) {
-        assert.equal(client.testString(''), '');
-        assert.equal(client.testString(stringTest), stringTest);
+  const specialCharacters: string =
+    'quote: \" backslash:' +
+    " forwardslash-escaped: \/ " +
+    " backspace: \b formfeed: \f newline: \n return: \r tab: " +
+    ' now-all-of-them-together: "\\\/\b\n\r\t' +
+    " now-a-bunch-of-junk: !@#$%&()(&%$#{}{}<><><";
+  assert.equal(client.testString(specialCharacters), specialCharacters);
+});
+QUnit.test("Double", function (assert) {
+  assert.equal(client.testDouble(0), 0);
+  assert.equal(client.testDouble(-1), -1);
+  assert.equal(client.testDouble(3.14), 3.14);
+  assert.equal(client.testDouble(Math.pow(2, 60)), Math.pow(2, 60));
+});
+QUnit.test("Byte", function (assert) {
+  assert.equal(client.testByte(0), 0);
+  assert.equal(client.testByte(0x01), 0x01);
+});
+QUnit.test("I32", function (assert) {
+  assert.equal(client.testI32(0), 0);
+  assert.equal(client.testI32(Math.pow(2, 30)), Math.pow(2, 30));
+  assert.equal(client.testI32(-Math.pow(2, 30)), -Math.pow(2, 30));
+});
+QUnit.test("I64", function (assert) {
+  assert.equal(client.testI64(new Int64(0)), 0);
 
-        const specialCharacters: string = 'quote: \" backslash:' +
-            ' forwardslash-escaped: \/ ' +
-            ' backspace: \b formfeed: \f newline: \n return: \r tab: ' +
-            ' now-all-of-them-together: "\\\/\b\n\r\t' +
-            ' now-a-bunch-of-junk: !@#$%&()(&%$#{}{}<><><';
-        assert.equal(client.testString(specialCharacters), specialCharacters);
-    });
-    QUnit.test('Double', function(assert) {
-        assert.equal(client.testDouble(0), 0);
-        assert.equal(client.testDouble(-1), -1);
-        assert.equal(client.testDouble(3.14), 3.14);
-        assert.equal(client.testDouble(Math.pow(2, 60)), Math.pow(2, 60));
-    });
-    QUnit.test('Byte', function(assert) {
-        assert.equal(client.testByte(0), 0);
-        assert.equal(client.testByte(0x01), 0x01);
-    });
-    QUnit.test('I32', function(assert) {
-        assert.equal(client.testI32(0), 0);
-        assert.equal(client.testI32(Math.pow(2, 30)), Math.pow(2, 30));
-        assert.equal(client.testI32(-Math.pow(2, 30)), -Math.pow(2, 30));
-    });
-    QUnit.test('I64', function(assert) {
-        assert.equal(client.testI64(new Int64(0)), 0);
+  let int64_2_pow_60_result: typeof Int64 = client.testI64(int64_2_pow_60);
+  assert.ok(int64_2_pow_60.equals(int64_2_pow_60_result));
 
-        let int64_2_pow_60_result: typeof Int64 = client.testI64(int64_2_pow_60);
-        assert.ok(int64_2_pow_60.equals(int64_2_pow_60_result));
+  let int64_minus_2_pow_60_result: typeof Int64 =
+    client.testI64(int64_minus_2_pow_60);
+  assert.ok(int64_minus_2_pow_60.equals(int64_minus_2_pow_60_result));
+});
 
-        let int64_minus_2_pow_60_result: typeof Int64 = client.testI64(int64_minus_2_pow_60);
-        assert.ok(int64_minus_2_pow_60.equals(int64_minus_2_pow_60_result));
-    });
+QUnit.module("Structured Types");
 
+QUnit.test("Struct", function (assert) {
+  const structTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
+  structTestInput.string_thing = "worked";
+  structTestInput.byte_thing = 0x01;
+  structTestInput.i32_thing = Math.pow(2, 30);
+  structTestInput.i64_thing = int64_2_pow_60;
 
-QUnit.module('Structured Types');
+  const structTestOutput: ThriftTest.Xtruct =
+    client.testStruct(structTestInput);
 
-    QUnit.test('Struct', function(assert) {
-        const structTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
-        structTestInput.string_thing = 'worked';
-        structTestInput.byte_thing = 0x01;
-        structTestInput.i32_thing = Math.pow(2, 30);
-        structTestInput.i64_thing = int64_2_pow_60;
+  assert.equal(structTestOutput.string_thing, structTestInput.string_thing);
+  assert.equal(structTestOutput.byte_thing, structTestInput.byte_thing);
+  assert.equal(structTestOutput.i32_thing, structTestInput.i32_thing);
+  assert.ok(structTestOutput.i64_thing.equals(structTestInput.i64_thing));
+  assert.ok(structTestInput.i64_thing.equals(structTestOutput.i64_thing));
 
-        const structTestOutput: ThriftTest.Xtruct = client.testStruct(structTestInput);
+  assert.equal(
+    JSONInt64.stringify(structTestOutput),
+    JSONInt64.stringify(structTestInput),
+  );
+});
 
-        assert.equal(structTestOutput.string_thing, structTestInput.string_thing);
-        assert.equal(structTestOutput.byte_thing, structTestInput.byte_thing);
-        assert.equal(structTestOutput.i32_thing, structTestInput.i32_thing);
-        assert.ok(structTestOutput.i64_thing.equals(structTestInput.i64_thing));
-        assert.ok(structTestInput.i64_thing.equals(structTestOutput.i64_thing));
+QUnit.test("Nest", function (assert) {
+  const xtrTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
+  xtrTestInput.string_thing = "worked";
+  xtrTestInput.byte_thing = 0x01;
+  xtrTestInput.i32_thing = Math.pow(2, 30);
+  xtrTestInput.i64_thing = int64_2_pow_60;
 
-        assert.equal(JSONInt64.stringify(structTestOutput), JSONInt64.stringify(structTestInput));
-    });
+  const nestTestInput: ThriftTest.Xtruct2 = new ThriftTest.Xtruct2();
+  nestTestInput.byte_thing = 0x02;
+  nestTestInput.struct_thing = xtrTestInput;
+  nestTestInput.i32_thing = Math.pow(2, 15);
 
-    QUnit.test('Nest', function(assert) {
-        const xtrTestInput: ThriftTest.Xtruct = new ThriftTest.Xtruct();
-        xtrTestInput.string_thing = 'worked';
-        xtrTestInput.byte_thing = 0x01;
-        xtrTestInput.i32_thing = Math.pow(2, 30);
-        xtrTestInput.i64_thing = int64_2_pow_60;
+  const nestTestOutput: ThriftTest.Xtruct2 = client.testNest(nestTestInput);
 
-        const nestTestInput: ThriftTest.Xtruct2 = new ThriftTest.Xtruct2();
-        nestTestInput.byte_thing = 0x02;
-        nestTestInput.struct_thing = xtrTestInput;
-        nestTestInput.i32_thing = Math.pow(2, 15);
+  assert.equal(nestTestOutput.byte_thing, nestTestInput.byte_thing);
+  assert.equal(
+    nestTestOutput.struct_thing.string_thing,
+    nestTestInput.struct_thing.string_thing,
+  );
+  assert.equal(
+    nestTestOutput.struct_thing.byte_thing,
+    nestTestInput.struct_thing.byte_thing,
+  );
+  assert.equal(
+    nestTestOutput.struct_thing.i32_thing,
+    nestTestInput.struct_thing.i32_thing,
+  );
+  assert.ok(
+    nestTestOutput.struct_thing.i64_thing.equals(
+      nestTestInput.struct_thing.i64_thing,
+    ),
+  );
+  assert.equal(nestTestOutput.i32_thing, nestTestInput.i32_thing);
 
-        const nestTestOutput: ThriftTest.Xtruct2 = client.testNest(nestTestInput);
+  assert.equal(
+    JSONInt64.stringify(nestTestOutput),
+    JSONInt64.stringify(nestTestInput),
+  );
+});
 
-        assert.equal(nestTestOutput.byte_thing, nestTestInput.byte_thing);
-        assert.equal(nestTestOutput.struct_thing.string_thing, nestTestInput.struct_thing.string_thing);
-        assert.equal(nestTestOutput.struct_thing.byte_thing, nestTestInput.struct_thing.byte_thing);
-        assert.equal(nestTestOutput.struct_thing.i32_thing, nestTestInput.struct_thing.i32_thing);
-        assert.ok(nestTestOutput.struct_thing.i64_thing.equals(nestTestInput.struct_thing.i64_thing));
-        assert.equal(nestTestOutput.i32_thing, nestTestInput.i32_thing);
+QUnit.test("Map", function (assert) {
+  const mapTestInput: { [k: number]: number } = { 7: 77, 8: 88, 9: 99 };
 
-        assert.equal(JSONInt64.stringify(nestTestOutput), JSONInt64.stringify(nestTestInput));
-    });
-    
-    QUnit.test('Map', function(assert) {
-        const mapTestInput: {[k: number]: number;} = {7: 77, 8: 88, 9: 99};
-    
-        const mapTestOutput: {[k: number]: number;} = client.testMap(mapTestInput);
-    
-        for (let key in mapTestOutput) {
-            assert.equal(mapTestOutput[key], mapTestInput[key]);
-        }
-    });
-    
-    QUnit.test('StringMap', function(assert) {
-        const mapTestInput: {[k: string]: string;} = {
-            'a': '123', 'a b': 'with spaces ', 'same': 'same', '0': 'numeric key',
-            'longValue': stringTest, stringTest: 'long key'
-        };
-    
-        const mapTestOutput: {[k: string]: string;} = client.testStringMap(mapTestInput);
-    
-        for (let key in mapTestOutput) {
-            assert.equal(mapTestOutput[key], mapTestInput[key]);
-        }
-    });
-    
-    QUnit.test('Set', function(assert) {
-        const setTestInput: number[] = [1, 2, 3];
-        assert.ok(client.testSet(setTestInput), setTestInput);
-    });
-    
-    QUnit.test('List', function(assert) {
-        const listTestInput: number[] = [1, 2, 3];
-        assert.ok(client.testList(listTestInput), listTestInput);
-    });
-    
-    QUnit.test('Enum', function(assert) {
-        assert.equal(client.testEnum(ThriftTest.Numberz.ONE), ThriftTest.Numberz.ONE);
-    });
-    
-    QUnit.test('TypeDef', function(assert) {
-        assert.equal(client.testTypedef(new Int64(69)), 69);
-    });
+  const mapTestOutput: { [k: number]: number } = client.testMap(mapTestInput);
 
+  for (let key in mapTestOutput) {
+    assert.equal(mapTestOutput[key], mapTestInput[key]);
+  }
+});
 
-QUnit.module('deeper!');
+QUnit.test("StringMap", function (assert) {
+  const mapTestInput: { [k: string]: string } = {
+    a: "123",
+    "a b": "with spaces ",
+    same: "same",
+    "0": "numeric key",
+    longValue: stringTest,
+    stringTest: "long key",
+  };
 
-    QUnit.test('MapMap', function(assert) {
-        const mapMapTestExpectedResult: {[K: number]: {[k: number]: number}} = {
-            '4': {'1': 1, '2': 2, '3': 3, '4': 4},
-            '-4': {'-4': -4, '-3': -3, '-2': -2, '-1': -1}
-        };
-    
-        const mapMapTestOutput = client.testMapMap(1);
-    
-    
-        for (let key in mapMapTestOutput) {
-            for (let key2 in mapMapTestOutput[key]) {
-                assert.equal(mapMapTestOutput[key][key2], mapMapTestExpectedResult[key][key2]);
-            }
-        }
-    
-        checkRecursively(assert, mapMapTestOutput, mapMapTestExpectedResult);
-    });
+  const mapTestOutput: { [k: string]: string } =
+    client.testStringMap(mapTestInput);
 
+  for (let key in mapTestOutput) {
+    assert.equal(mapTestOutput[key], mapTestInput[key]);
+  }
+});
 
-QUnit.module('Exception');
+QUnit.test("Set", function (assert) {
+  const setTestInput: number[] = [1, 2, 3];
+  assert.ok(client.testSet(setTestInput), setTestInput);
+});
 
-    QUnit.test('Xception', function(assert) {
-        assert.expect(2);
-        const done = assert.async();
-        try {
-            client.testException('Xception');
-            assert.ok(false);
-        }catch (e) {
-            assert.equal(e.errorCode, 1001);
-            assert.equal(e.message, 'Xception');
-            done();
-        }
-    });
-  
-    QUnit.test('no Exception', function(assert) {
-        assert.expect(1);
-        try {
-            client.testException('no Exception');
-            assert.ok(true);
-        }catch (e) {
-            assert.ok(false);
-        }
-    });
-  
-    QUnit.test('TException', function(assert) {
-        //ThriftTest does not list TException as a legal exception so it will
-        // generate an exception on the server that does not propagate back to
-        // the client. This test has been modified to equate to "no exception"
-        assert.expect(1);
-        try {
-            client.testException('TException');
-        } catch (e) {
-            //assert.ok(false);
-        }
-        assert.ok(true);
-    });
+QUnit.test("List", function (assert) {
+  const listTestInput: number[] = [1, 2, 3];
+  assert.ok(client.testList(listTestInput), listTestInput);
+});
 
+QUnit.test("Enum", function (assert) {
+  assert.equal(client.testEnum(ThriftTest.Numberz.ONE), ThriftTest.Numberz.ONE);
+});
 
-QUnit.module('Insanity');
+QUnit.test("TypeDef", function (assert) {
+  assert.equal(client.testTypedef(new Int64(69)), 69);
+});
 
-    const crazy: ThriftTest.Insanity = {
-        'userMap': { '5': new Int64(5), '8': new Int64(8) },
-        'xtructs': [{
-            'string_thing': 'Goodbye4',
-            'byte_thing': 4,
-            'i32_thing': 4,
-            'i64_thing': new Int64(4)
-        },
-        {
-            'string_thing': 'Hello2',
-            'byte_thing': 2,
-            'i32_thing': 2,
-            'i64_thing': new Int64(2)
-        }]
-    };
-    QUnit.test('testInsanity', function(assert) {
-        const insanity: {[k: number]: (ThriftTest.Insanity | {[k:number]: ThriftTest.Insanity})} = {
-            '1': {
-                '2': crazy,
-                '3': crazy
-            },
-            '2': { '6': new ThriftTest.Insanity() }
-        };
-        const res = client.testInsanity(new ThriftTest.Insanity(crazy));
-        assert.ok(res, JSONInt64.stringify(res));
-        assert.ok(insanity, JSONInt64.stringify(insanity));
-    
-        checkRecursively(assert, res, insanity);
-    });
+QUnit.module("deeper!");
 
+QUnit.test("MapMap", function (assert) {
+  const mapMapTestExpectedResult: { [K: number]: { [k: number]: number } } = {
+    "4": { "1": 1, "2": 2, "3": 3, "4": 4 },
+    "-4": { "-4": -4, "-3": -3, "-2": -2, "-1": -1 },
+  };
+
+  const mapMapTestOutput = client.testMapMap(1);
+
+  for (let key in mapMapTestOutput) {
+    for (let key2 in mapMapTestOutput[key]) {
+      assert.equal(
+        mapMapTestOutput[key][key2],
+        mapMapTestExpectedResult[key][key2],
+      );
+    }
+  }
+
+  checkRecursively(assert, mapMapTestOutput, mapMapTestExpectedResult);
+});
+
+QUnit.module("Exception");
+
+QUnit.test("Xception", function (assert) {
+  assert.expect(2);
+  const done = assert.async();
+  try {
+    client.testException("Xception");
+    assert.ok(false);
+  } catch (e) {
+    assert.equal(e.errorCode, 1001);
+    assert.equal(e.message, "Xception");
+    done();
+  }
+});
+
+QUnit.test("no Exception", function (assert) {
+  assert.expect(1);
+  try {
+    client.testException("no Exception");
+    assert.ok(true);
+  } catch (e) {
+    assert.ok(false);
+  }
+});
+
+QUnit.test("TException", function (assert) {
+  //ThriftTest does not list TException as a legal exception so it will
+  // generate an exception on the server that does not propagate back to
+  // the client. This test has been modified to equate to "no exception"
+  assert.expect(1);
+  try {
+    client.testException("TException");
+  } catch (e) {
+    //assert.ok(false);
+  }
+  assert.ok(true);
+});
+
+QUnit.module("Insanity");
+
+const crazy: ThriftTest.Insanity = {
+  userMap: { "5": new Int64(5), "8": new Int64(8) },
+  xtructs: [
+    {
+      string_thing: "Goodbye4",
+      byte_thing: 4,
+      i32_thing: 4,
+      i64_thing: new Int64(4),
+    },
+    {
+      string_thing: "Hello2",
+      byte_thing: 2,
+      i32_thing: 2,
+      i64_thing: new Int64(2),
+    },
+  ],
+};
+QUnit.test("testInsanity", function (assert) {
+  const insanity: {
+    [k: number]: ThriftTest.Insanity | { [k: number]: ThriftTest.Insanity };
+  } = {
+    "1": {
+      "2": crazy,
+      "3": crazy,
+    },
+    "2": { "6": new ThriftTest.Insanity() },
+  };
+  const res = client.testInsanity(new ThriftTest.Insanity(crazy));
+  assert.ok(res, JSONInt64.stringify(res));
+  assert.ok(insanity, JSONInt64.stringify(insanity));
+
+  checkRecursively(assert, res, insanity);
+});
 
 //////////////////////////////////
 //Run same tests asynchronously
 
-QUnit.module('Async');
+QUnit.module("Async");
 
-    QUnit.test('Double', function(assert) {
-        assert.expect(1);
+QUnit.test("Double", function (assert) {
+  assert.expect(1);
 
-        const done = assert.async();
-        client.testDouble(3.14159265, function(result) {
-            assert.equal(result, 3.14159265);
-            done();
-        });
-    });
+  const done = assert.async();
+  client.testDouble(3.14159265, function (result) {
+    assert.equal(result, 3.14159265);
+    done();
+  });
+});
 
-    QUnit.test('Byte', function(assert) {
-        assert.expect(1);
+QUnit.test("Byte", function (assert) {
+  assert.expect(1);
 
-        const done = assert.async();
-        client.testByte(0x01, function(result) {
-            assert.equal(result, 0x01);
-            done();
-        });
-    });
+  const done = assert.async();
+  client.testByte(0x01, function (result) {
+    assert.equal(result, 0x01);
+    done();
+  });
+});
 
-    QUnit.test('I32', function(assert) {
-        assert.expect(2);
+QUnit.test("I32", function (assert) {
+  assert.expect(2);
 
-        const done = assert.async(2);
-        client.testI32(Math.pow(2, 30), function(result) {
-            assert.equal(result, Math.pow(2, 30));
-            done();
-        });
+  const done = assert.async(2);
+  client.testI32(Math.pow(2, 30), function (result) {
+    assert.equal(result, Math.pow(2, 30));
+    done();
+  });
 
-        client.testI32(Math.pow(-2, 31), function(result) {
-            assert.equal(result, Math.pow(-2, 31));
-            done();
-        });
-    });
+  client.testI32(Math.pow(-2, 31), function (result) {
+    assert.equal(result, Math.pow(-2, 31));
+    done();
+  });
+});
 
-    QUnit.test('I64', function(assert) {
-        assert.expect(2);
+QUnit.test("I64", function (assert) {
+  assert.expect(2);
 
-        const done = assert.async(2);
-        client.testI64(int64_2_pow_60, function(result) {
-            assert.ok(int64_2_pow_60.equals(result));
-            done();
-        });
+  const done = assert.async(2);
+  client.testI64(int64_2_pow_60, function (result) {
+    assert.ok(int64_2_pow_60.equals(result));
+    done();
+  });
 
-        client.testI64(int64_minus_2_pow_60, function(result) {
-            assert.ok(int64_minus_2_pow_60.equals(result));
-            done();
-        });
-    });
+  client.testI64(int64_minus_2_pow_60, function (result) {
+    assert.ok(int64_minus_2_pow_60.equals(result));
+    done();
+  });
+});
diff --git a/lib/ts/test/test_handler.js b/lib/ts/test/test_handler.js
index 8ba296b..825c567 100644
--- a/lib/ts/test/test_handler.js
+++ b/lib/ts/test/test_handler.js
@@ -20,87 +20,87 @@
 //This is the server side Node test handler for the standard
 //  Apache Thrift test service.
 
-const es6Mode = process.argv.includes('--es6');
-const genFolder = es6Mode ? 'gen-nodejs-es6' : 'gen-nodejs';
+const es6Mode = process.argv.includes("--es6");
+const genFolder = es6Mode ? "gen-nodejs-es6" : "gen-nodejs";
 const ttypes = require(`./${genFolder}/ThriftTest_types`);
-const TException = require('../../nodejs/lib/thrift').TException;
-const Int64 = require('node-int64');
+const TException = require("../../nodejs/lib/thrift").TException;
+const Int64 = require("node-int64");
 
 exports.ThriftTestHandler = {
-  testVoid: function(result) {
-    console.log('testVoid()');
+  testVoid: function (result) {
+    console.log("testVoid()");
     result(null);
   },
-  testString: function(thing, result) {
-    console.log('testString(\'' + thing + '\')');
+  testString: function (thing, result) {
+    console.log("testString('" + thing + "')");
     result(null, thing);
   },
-  testByte: function(thing, result) {
-    console.log('testByte(' + thing + ')');
+  testByte: function (thing, result) {
+    console.log("testByte(" + thing + ")");
     result(null, thing);
   },
-  testI32: function(thing, result) {
-    console.log('testI32(' + thing + ')');
+  testI32: function (thing, result) {
+    console.log("testI32(" + thing + ")");
     result(null, thing);
   },
-  testI64: function(thing, result) {
-    console.log('testI64(' + thing + ')');
+  testI64: function (thing, result) {
+    console.log("testI64(" + thing + ")");
     result(null, thing);
   },
-  testDouble: function(thing, result) {
-    console.log('testDouble(' + thing + ')');
+  testDouble: function (thing, result) {
+    console.log("testDouble(" + thing + ")");
     result(null, thing);
   },
-  testBinary: function(thing, result) {
-    console.log('testBinary(\'' + thing + '\')');
+  testBinary: function (thing, result) {
+    console.log("testBinary('" + thing + "')");
     result(null, thing);
   },
-  testStruct: function(thing, result) {
-    console.log('testStruct(');
+  testStruct: function (thing, result) {
+    console.log("testStruct(");
     console.log(thing);
-    console.log(')');
+    console.log(")");
     result(null, thing);
   },
-  testNest: function(nest, result) {
-    console.log('testNest(');
+  testNest: function (nest, result) {
+    console.log("testNest(");
     console.log(nest);
-    console.log(')');
+    console.log(")");
     result(null, nest);
   },
-  testMap: function(thing, result) {
-    console.log('testMap(');
+  testMap: function (thing, result) {
+    console.log("testMap(");
     console.log(thing);
-    console.log(')');
+    console.log(")");
     result(null, thing);
   },
-  testStringMap: function(thing, result) {
-    console.log('testStringMap(');
+  testStringMap: function (thing, result) {
+    console.log("testStringMap(");
     console.log(thing);
-    console.log(')');
+    console.log(")");
     result(null, thing);
   },
-  testSet: function(thing, result) {
-    console.log('testSet(');
+  testSet: function (thing, result) {
+    console.log("testSet(");
     console.log(thing);
-    console.log(')');
+    console.log(")");
     result(null, thing);
   },
-  testList: function(thing, result) {
-    console.log('testList(');
+  testList: function (thing, result) {
+    console.log("testList(");
     console.log(thing);
-    console.log(')');
+    console.log(")");
     result(null, thing);
   },
-  testEnum: function(thing, result) {
-    console.log('testEnum(' + thing + ')');
+  testEnum: function (thing, result) {
+    console.log("testEnum(" + thing + ")");
     result(null, thing);
   },
-  testTypedef: function(thing, result) {
-    console.log('testTypedef(' + thing + ')');
+  testTypedef: function (thing, result) {
+    console.log("testTypedef(" + thing + ")");
     result(null, thing);
   },
-  testMapMap: function(hello, result) {
-    console.log('testMapMap(' + hello + ')');
+  testMapMap: function (hello, result) {
+    console.log("testMapMap(" + hello + ")");
 
     const mapmap = [];
     const pos = [];
@@ -114,19 +114,19 @@
 
     result(null, mapmap);
   },
-  testInsanity: function(argument, result) {
-    console.log('testInsanity(');
+  testInsanity: function (argument, result) {
+    console.log("testInsanity(");
     console.log(argument);
-    console.log(')');
+    console.log(")");
 
     const hello = new ttypes.Xtruct();
-    hello.string_thing = 'Hello2';
+    hello.string_thing = "Hello2";
     hello.byte_thing = 2;
     hello.i32_thing = 2;
     hello.i64_thing = new Int64(2);
 
     const goodbye = new ttypes.Xtruct();
-    goodbye.string_thing = 'Goodbye4';
+    goodbye.string_thing = "Goodbye4";
     goodbye.byte_thing = 4;
     goodbye.i32_thing = 4;
     goodbye.i64_thing = new Int64(4);
@@ -150,45 +150,45 @@
     insane[1] = first_map;
     insane[2] = second_map;
 
-    console.log('insane result:');
+    console.log("insane result:");
     console.log(insane);
     result(null, insane);
   },
-  testMulti: function(arg0, arg1, arg2, arg3, arg4, arg5, result) {
-    console.log('testMulti()');
+  testMulti: function (arg0, arg1, arg2, arg3, arg4, arg5, result) {
+    console.log("testMulti()");
 
     const hello = new ttypes.Xtruct();
-    hello.string_thing = 'Hello2';
+    hello.string_thing = "Hello2";
     hello.byte_thing = arg0;
     hello.i32_thing = arg1;
     hello.i64_thing = arg2;
     result(null, hello);
   },
-  testException: function(arg, result) {
-    console.log('testException(' + arg + ')');
-    if (arg === 'Xception') {
+  testException: function (arg, result) {
+    console.log("testException(" + arg + ")");
+    if (arg === "Xception") {
       const x = new ttypes.Xception();
       x.errorCode = 1001;
       x.message = arg;
       result(x);
-    } else if (arg === 'TException') {
+    } else if (arg === "TException") {
       result(new TException(arg));
     } else {
       result(null);
     }
   },
-  testMultiException: function(arg0, arg1, result) {
-    console.log('testMultiException(' + arg0 + ', ' + arg1 + ')');
-    if (arg0 === ('Xception')) {
+  testMultiException: function (arg0, arg1, result) {
+    console.log("testMultiException(" + arg0 + ", " + arg1 + ")");
+    if (arg0 === "Xception") {
       const x = new ttypes.Xception();
       x.errorCode = 1001;
-      x.message = 'This is an Xception';
+      x.message = "This is an Xception";
       result(x);
-    } else if (arg0 === ('Xception2')) {
+    } else if (arg0 === "Xception2") {
       const x2 = new ttypes.Xception2();
       x2.errorCode = 2002;
       x2.struct_thing = new ttypes.Xtruct();
-      x2.struct_thing.string_thing = 'This is an Xception2';
+      x2.struct_thing.string_thing = "This is an Xception2";
       result(x2);
     }
 
@@ -196,7 +196,9 @@
     res.string_thing = arg1;
     result(null, res);
   },
-  testOneway: function(sleepFor, result) {
-    console.log('testOneway(' + sleepFor + ') => JavaScript (like Rust) never sleeps!');
-  }
-};   //ThriftTestSvcHandler
+  testOneway: function (sleepFor, result) {
+    console.log(
+      "testOneway(" + sleepFor + ") => JavaScript (like Rust) never sleeps!",
+    );
+  },
+}; //ThriftTestSvcHandler
diff --git a/lib/ts/thrift.d.ts b/lib/ts/thrift.d.ts
index 0ba46c9..8e9d565 100644
--- a/lib/ts/thrift.d.ts
+++ b/lib/ts/thrift.d.ts
@@ -29,7 +29,7 @@
    * @property {number}  VOID   - No value (only legal for return types).
    * @property {number}  BOOL   - True/False integer.
    * @property {number}  BYTE   - Signed 8 bit integer.
-   * @property {number}  I08    - Signed 8 bit integer.     
+   * @property {number}  I08    - Signed 8 bit integer.
    * @property {number}  DOUBLE - 64 bit IEEE 854 floating point.
    * @property {number}  I16    - Signed 16 bit integer.
    * @property {number}  I32    - Signed 32 bit integer.
@@ -44,23 +44,23 @@
    * @property {number}  UTF16  - Array of bytes representing a string of UTF16 encoded characters.
    */
   interface Type {
-    'STOP': number;
-    'VOID': number;
-    'BOOL': number;
-    'BYTE': number;
-    'I08': number;
-    'DOUBLE': number;
-    'I16': number;
-    'I32': number;
-    'I64': number;
-    'STRING': number;
-    'UTF7': number;
-    'STRUCT': number;
-    'MAP': number;
-    'SET': number;
-    'LIST': number;
-    'UTF8': number;
-    'UTF16': number;
+    STOP: number;
+    VOID: number;
+    BOOL: number;
+    BYTE: number;
+    I08: number;
+    DOUBLE: number;
+    I16: number;
+    I32: number;
+    I64: number;
+    STRING: number;
+    UTF7: number;
+    STRUCT: number;
+    MAP: number;
+    SET: number;
+    LIST: number;
+    UTF8: number;
+    UTF16: number;
   }
   var Type: Type;
 
@@ -72,10 +72,10 @@
    * @property {number}  ONEWAY    - Oneway RPC call from client to server with no response.
    */
   interface MessageType {
-    'CALL': number;
-    'REPLY': number;
-    'EXCEPTION': number;
-    'ONEWAY': number;
+    CALL: number;
+    REPLY: number;
+    EXCEPTION: number;
+    ONEWAY: number;
   }
   var MessageType: MessageType;
 
@@ -92,7 +92,11 @@
    * @param {function} superConstructor - Contstructor function to set as base.
    * @param {string} [name] - Type name to set as name property in derived prototype.
    */
-  function inherits(constructor: Function, superConstructor: Function, name?: string): void;
+  function inherits(
+    constructor: Function,
+    superConstructor: Function,
+    name?: string,
+  ): void;
 
   /**
    * TException is the base class for all Thrift exceptions types.
@@ -129,17 +133,17 @@
    * @property {number}  UNSUPPORTED_CLIENT_TYPE - Unused.
    */
   interface TApplicationExceptionType {
-    'UNKNOWN': number;
-    'UNKNOWN_METHOD': number;
-    'INVALID_MESSAGE_TYPE': number;
-    'WRONG_METHOD_NAME': number;
-    'BAD_SEQUENCE_ID': number;
-    'MISSING_RESULT': number;
-    'INTERNAL_ERROR': number;
-    'PROTOCOL_ERROR': number;
-    'INVALID_TRANSFORM': number;
-    'INVALID_PROTOCOL': number;
-    'UNSUPPORTED_CLIENT_TYPE': number;
+    UNKNOWN: number;
+    UNKNOWN_METHOD: number;
+    INVALID_MESSAGE_TYPE: number;
+    WRONG_METHOD_NAME: number;
+    BAD_SEQUENCE_ID: number;
+    MISSING_RESULT: number;
+    INTERNAL_ERROR: number;
+    PROTOCOL_ERROR: number;
+    INVALID_TRANSFORM: number;
+    INVALID_PROTOCOL: number;
+    UNSUPPORTED_CLIENT_TYPE: number;
   }
   var TApplicationExceptionType: TApplicationExceptionType;
 
@@ -179,7 +183,7 @@
   /**
    * The Apache Thrift Transport layer performs byte level I/O between RPC
    * clients and servers. The JavaScript Transport object type uses Http[s]/XHR and is
-   * the sole browser based Thrift transport. Target servers must implement the http[s] 
+   * the sole browser based Thrift transport. Target servers must implement the http[s]
    * transport (see: node.js example server).
    */
   class TXHRTransport {
@@ -208,7 +212,7 @@
     /**
      * Sends the current XRH request if the transport was created with a URL and
      * the async parameter if false. If the transport was not created with a URL
-     * or the async parameter is True or the URL is an empty string, the current 
+     * or the async parameter is True or the URL is an empty string, the current
      * send buffer is returned.
      * @param {object} async - If true the current send buffer is returned.
      * @param {function} callback - Optional async completion callback.
@@ -224,7 +228,12 @@
      * @param {function} recv_method - The Thrift Service Client receive method for the call.
      * @returns {object} A new jQuery XHR object.
      */
-    jqRequest(client: Object, postData: any, args: Function, recv_method: Function): Object;
+    jqRequest(
+      client: Object,
+      postData: any,
+      args: Function,
+      recv_method: Function,
+    ): Object;
 
     /**
      * Sets the buffer to use when receiving server responses.
@@ -281,22 +290,22 @@
   /**
    * Old alias of the TXHRTransport for backwards compatibility.
    */
-  class Transport extends TXHRTransport { }
+  class Transport extends TXHRTransport {}
 
   /**
-   * The Apache Thrift Transport layer performs byte level I/O 
-   * between RPC clients and servers. The JavaScript TWebSocketTransport object 
+   * The Apache Thrift Transport layer performs byte level I/O
+   * between RPC clients and servers. The JavaScript TWebSocketTransport object
    * uses the WebSocket protocol. Target servers must implement WebSocket.
    */
   class TWebSocketTransport {
-    url: string;           //Where to connect
-    socket: any;           //The web socket
+    url: string; //Where to connect
+    socket: any; //The web socket
     callbacks: Function[]; //Pending callbacks
-    send_pending: any[];   //Buffers/Callback pairs waiting to be sent
-    send_buf: string;      //Outbound data, immutable until sent
-    recv_buf: string;      //Inbound data
-    rb_wpos: number;       //Network write position in receive buffer
-    rb_rpos: number;       //Client read position in receive buffer
+    send_pending: any[]; //Buffers/Callback pairs waiting to be sent
+    send_buf: string; //Outbound data, immutable until sent
+    recv_buf: string; //Inbound data
+    rb_wpos: number; //Network write position in receive buffer
+    rb_rpos: number; //Client read position in receive buffer
 
     /**
      * Constructor Function for the WebSocket transport.
@@ -307,12 +316,12 @@
     __reset(url: string): void;
 
     /**
-     * Sends the current WS request and registers callback. The async 
-     * parameter is ignored (WS flush is always async) and the callback 
+     * Sends the current WS request and registers callback. The async
+     * parameter is ignored (WS flush is always async) and the callback
      * function parameter is required.
      * @param {object} async - Ignored.
      * @param {function} callback - The client completion callback.
-     * @returns {undefined|string} Nothing (undefined) 
+     * @returns {undefined|string} Nothing (undefined)
      */
     flush(async: any, callback: Function): string;
 
@@ -332,7 +341,7 @@
 
     /**
      * Returns true if the transport is open
-     * @returns {boolean} 
+     * @returns {boolean}
      */
     isOpen(): boolean;
 
@@ -374,8 +383,8 @@
   }
 
   /**
-   * Apache Thrift Protocols perform serialization which enables cross 
-   * language RPC. The Protocol type is the JavaScript browser implementation 
+   * Apache Thrift Protocols perform serialization which enables cross
+   * language RPC. The Protocol type is the JavaScript browser implementation
    * of the Apache Thrift TJSONProtocol.
    */
   class TJSONProtocol {
@@ -401,17 +410,17 @@
     /**
      * Thrift IDL type string to Id mapping.
      * The mapping table looks as follows:
-     * "tf"  -> Thrift.Type.BOOL  
-     * "i8"  -> Thrift.Type.BYTE  
-     * "i16" -> Thrift.Type.I16   
-     * "i32" -> Thrift.Type.I32   
-     * "i64" -> Thrift.Type.I64   
+     * "tf"  -> Thrift.Type.BOOL
+     * "i8"  -> Thrift.Type.BYTE
+     * "i16" -> Thrift.Type.I16
+     * "i32" -> Thrift.Type.I32
+     * "i64" -> Thrift.Type.I64
      * "dbl" -> Thrift.Type.DOUBLE
      * "rec" -> Thrift.Type.STRUCT
      * "str" -> Thrift.Type.STRING
-     * "map" -> Thrift.Type.MAP   
-     * "lst" -> Thrift.Type.LIST  
-     * "set" -> Thrift.Type.SET   
+     * "map" -> Thrift.Type.MAP
+     * "lst" -> Thrift.Type.LIST
+     * "set" -> Thrift.Type.SET
      */
     RType: { [k: string]: number };
 
@@ -542,8 +551,8 @@
        @property {Thrift.MessageType} mtype - The type of message call.
        @property {number} rseqid - The sequence number of the message (0 in Thrift RPC).
      */
-    /** 
-     * Deserializes the beginning of a message. 
+    /**
+     * Deserializes the beginning of a message.
      * @returns {AnonReadMessageBeginReturn}
      */
     readMessageBegin(): { fname: string; mtype: number; rseqid: number };
@@ -551,8 +560,8 @@
     /** Deserializes the end of a message. */
     readMessageEnd(): void;
 
-    /** 
-     * Deserializes the beginning of a struct. 
+    /**
+     * Deserializes the beginning of a struct.
      * @param {string} [name] - The name of the struct (ignored).
      * @returns {object} - An object with an empty string fname property.
      */
@@ -568,8 +577,8 @@
        @property {Thrift.Type} ftype - The data type of the field.
        @property {number} fid - The unique identifier of the field.
      */
-    /** 
-     * Deserializes the beginning of a field. 
+    /**
+     * Deserializes the beginning of a field.
      * @returns {AnonReadFieldBeginReturn}
      */
     readFieldBegin(): { fname: string; ftype: number; fid: number };
@@ -584,8 +593,8 @@
        @property {Thrift.Type} vtype - The data type of the value.
        @property {number} size - The number of elements in the map.
      */
-    /** 
-     * Deserializes the beginning of a map. 
+    /**
+     * Deserializes the beginning of a map.
      * @returns {AnonReadMapBeginReturn}
      */
     readMapBegin(): { ktype: number; vtype: number; size: number };
@@ -599,8 +608,8 @@
        @property {Thrift.Type} etype - The data type of the element.
        @property {number} size - The number of elements in the collection.
      */
-    /** 
-     * Deserializes the beginning of a list. 
+    /**
+     * Deserializes the beginning of a list.
      * @returns {AnonReadColBeginReturn}
      */
     readListBegin(): { etype: number; size: number };
@@ -608,19 +617,22 @@
     /** Deserializes the end of a list. */
     readListEnd(): void;
 
-    /** 
-     * Deserializes the beginning of a set. 
+    /**
+     * Deserializes the beginning of a set.
      * @param {Thrift.Type} elemType - The data type of the elements (ignored).
      * @param {number} size - The number of elements in the list (ignored).
      * @returns {AnonReadColBeginReturn}
      */
-    readSetBegin(elemType?: number, size?: number): { etype: number; size: number };
+    readSetBegin(
+      elemType?: number,
+      size?: number,
+    ): { etype: number; size: number };
 
     /** Deserializes the end of a set. */
     readSetEnd(): void;
 
-    /** Returns an object with a value property set to 
-     *  False unless the next number in the protocol buffer 
+    /** Returns an object with a value property set to
+     *  False unless the next number in the protocol buffer
      *  is 1, in which case the value property is True. */
     readBool(): Object;
 
@@ -652,7 +664,7 @@
         next value found in the protocol buffer. */
     readBinary(): Object;
 
-    /** 
+    /**
      * Method to arbitrarily skip over data (not implemented).
      */
     skip(type: number): void;
@@ -661,7 +673,7 @@
   /**
    * Old alias of the TXHRTransport for backwards compatibility.
    */
-  class Protocol extends TJSONProtocol { }
+  class Protocol extends TJSONProtocol {}
 
   class MultiplexProtocol extends TJSONProtocol {
     serviceName: string;
@@ -673,7 +685,12 @@
      * @param {any} [strictRead]
      * @param {any} [strictWrite]
      */
-    constructor(srvName: string, trans: Object, strictRead?: any, strictWrite?: any);
+    constructor(
+      srvName: string,
+      trans: Object,
+      strictRead?: any,
+      strictWrite?: any,
+    );
 
     /**
      * Override writeMessageBegin method of prototype