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);
