diff --git a/lib/nodejs/test/exceptions.js b/lib/nodejs/test/exceptions.js
index afb3f67..ab2798a 100644
--- a/lib/nodejs/test/exceptions.js
+++ b/lib/nodejs/test/exceptions.js
@@ -17,72 +17,130 @@
  * under the License.
  */
 
-'use strict';
-var test = require('tape');
-var thrift = require('../lib/thrift/thrift.js');
-var InputBufferUnderrunError = require('../lib/thrift/input_buffer_underrun_error');
+"use strict";
+const test = require("tape");
+const thrift = require("../lib/thrift/thrift.js");
+const InputBufferUnderrunError = require("../lib/thrift/input_buffer_underrun_error");
 
-test('TApplicationException', function t(assert) {
-  var e = new thrift.TApplicationException(1, 'foo');
-  assert.ok(e instanceof thrift.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');
-  assert.ok(e.stack.indexOf('test/exceptions.js:7:11') !== -1, 'stack trace starts on correct line and column');
-  assert.equal(e.name, 'TApplicationException', 'has function name TApplicationException');
-  assert.equal(e.message, 'foo', 'has error message "foo"');
-  assert.equal(e.type, 1, 'has type 1');
+test("TApplicationException", function t(assert) {
+  const e = new thrift.TApplicationException(1, "foo");
+  assert.ok(
+    e instanceof thrift.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"
+  );
+  assert.ok(
+    e.stack.indexOf("test/exceptions.js:7:11") !== -1,
+    "stack trace starts on correct line and column"
+  );
+  assert.equal(
+    e.name,
+    "TApplicationException",
+    "has function name TApplicationException"
+  );
+  assert.equal(e.message, "foo", 'has error message "foo"');
+  assert.equal(e.type, 1, "has type 1");
   assert.end();
 });
 
-test('unexpected TApplicationException ', function t(assert) {
-  var e = new thrift.TApplicationException(1, 100);
-  assert.ok(e instanceof thrift.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');
-  assert.ok(e.stack.indexOf('test/exceptions.js:7:11') !== -1, 'stack trace starts on correct line and column');
-  assert.equal(e.name, 'TApplicationException', 'has function name TApplicationException');
-  assert.equal(e.message, 100, 'has error message 100');
-  assert.equal(e.type, 1, 'has type 1');
+test("unexpected TApplicationException ", function t(assert) {
+  const e = new thrift.TApplicationException(1, 100);
+  assert.ok(
+    e instanceof thrift.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"
+  );
+  assert.ok(
+    e.stack.indexOf("test/exceptions.js:7:11") !== -1,
+    "stack trace starts on correct line and column"
+  );
+  assert.equal(
+    e.name,
+    "TApplicationException",
+    "has function name TApplicationException"
+  );
+  assert.equal(e.message, 100, "has error message 100");
+  assert.equal(e.type, 1, "has type 1");
   assert.end();
 });
 
-test('TException', function t(assert) {
-  var e = new thrift.TException('foo');
-  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(/^TException: foo/.test(e.stack), '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');
-  assert.equal(e.name, 'TException', 'has function name TException');
-  assert.equal(e.message, 'foo', 'has error message "foo"');
+test("TException", function t(assert) {
+  const e = new thrift.TException("foo");
+  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(
+    /^TException: foo/.test(e.stack),
+    "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"
+  );
+  assert.equal(e.name, "TException", "has function name TException");
+  assert.equal(e.message, "foo", 'has error message "foo"');
   assert.end();
 });
 
-test('TProtocolException', function t(assert) {
-  var e = new thrift.TProtocolException(1, 'foo');
-  assert.ok(e instanceof thrift.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');
-  assert.ok(e.stack.indexOf('test/exceptions.js:33:11') !== -1, 'stack trace starts on correct line and column');
-  assert.equal(e.name, 'TProtocolException', 'has function name TProtocolException');
-  assert.equal(e.message, 'foo', 'has error message "foo"');
-  assert.equal(e.type, 1, 'has type 1');
+test("TProtocolException", function t(assert) {
+  const e = new thrift.TProtocolException(1, "foo");
+  assert.ok(
+    e instanceof thrift.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"
+  );
+  assert.ok(
+    e.stack.indexOf("test/exceptions.js:33:11") !== -1,
+    "stack trace starts on correct line and column"
+  );
+  assert.equal(
+    e.name,
+    "TProtocolException",
+    "has function name TProtocolException"
+  );
+  assert.equal(e.message, "foo", 'has error message "foo"');
+  assert.equal(e.type, 1, "has type 1");
   assert.end();
 });
 
-test('InputBufferUnderrunError', function t(assert) {
-  var e = new InputBufferUnderrunError('foo');
-  assert.ok(e 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');
-  assert.ok(e.stack.indexOf('test/exceptions.js:46:11') !== -1, 'stack trace starts on correct line and column');
-  assert.equal(e.name, 'InputBufferUnderrunError', 'has function name InputBufferUnderrunError');
-  assert.equal(e.message, 'foo', 'has error message "foo"');
+test("InputBufferUnderrunError", function t(assert) {
+  const e = new InputBufferUnderrunError("foo");
+  assert.ok(
+    e 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"
+  );
+  assert.ok(
+    e.stack.indexOf("test/exceptions.js:46:11") !== -1,
+    "stack trace starts on correct line and column"
+  );
+  assert.equal(
+    e.name,
+    "InputBufferUnderrunError",
+    "has function name InputBufferUnderrunError"
+  );
+  assert.equal(e.message, "foo", 'has error message "foo"');
   assert.end();
 });
