diff --git a/lib/nodejs/lib/thrift/server.js b/lib/nodejs/lib/thrift/server.js
index 313a800..5453bc8 100644
--- a/lib/nodejs/lib/thrift/server.js
+++ b/lib/nodejs/lib/thrift/server.js
@@ -23,12 +23,12 @@
     TBinaryProtocol = require('./protocol').TBinaryProtocol;
 
 
-/** 
- * Create a Thrift server which can serve one or multiple services. 
+/**
+ * Create a Thrift server which can serve one or multiple services.
  * @param {object} processor - A normal or multiplexedProcessor (must
  *                             be preconstructed with the desired handler).
  * @param {ServerOptions} options - Optional additional server configuration.
- * @returns {object} - The Apache Thrift Multipled Server.
+ * @returns {object} - The Apache Thrift Multiplex Server.
  */
 exports.createMultiplexServer = function(processor, options) {
   var transport = (options && options.transport) ? options.transport : ttransport.TBufferedTransport;
@@ -85,7 +85,7 @@
       stream.end();
     });
   }
-  
+
   if (options.tls) {
     return tls.createServer(options.tls, serverImpl);
   } else {
@@ -93,11 +93,11 @@
   }
 };
 
-/** 
- * Create a single service Apache Thrift server. 
+/**
+ * Create a single service Apache Thrift server.
  * @param {object} processor - A service class or processor function.
  * @param {ServerOptions} options - Optional additional server configuration.
- * @returns {object} - The Apache Thrift Multipled Server.
+ * @returns {object} - The Apache Thrift Multiplex Server.
  */
 exports.createServer = function(processor, handler, options) {
   if (processor.Processor) {
