diff --git a/lib/js/src/thrift.js b/lib/js/src/thrift.js
index c682605..123f526 100644
--- a/lib/js/src/thrift.js
+++ b/lib/js/src/thrift.js
@@ -284,10 +284,9 @@
 
 Thrift.TProtocolException = function TProtocolException(type, message) {
     Error.call(this);
-    if (Error.captureStackTrace) {
+    if (Error.captureStackTrace !== undefined) {
         Error.captureStackTrace(this, this.constructor);
     }
-
     this.name = this.constructor.name;
     this.type = type;
     this.message = message;
diff --git a/lib/nodejs/lib/thrift/browser.js b/lib/nodejs/lib/thrift/browser.js
index ba1ea8c..0b06f0f 100644
--- a/lib/nodejs/lib/thrift/browser.js
+++ b/lib/nodejs/lib/thrift/browser.js
@@ -18,25 +18,32 @@
  */
 exports.Thrift = require('./thrift');
 
-var xhrConnection = require('./xhr_connection');
-exports.XHRConnection = xhrConnection.XHRConnection;
-exports.createXHRConnection = xhrConnection.createXHRConnection;
-exports.createXHRClient = xhrConnection.createXHRClient;
-
 var wsConnection = require('./ws_connection');
 exports.WSConnection = wsConnection.WSConnection;
 exports.createWSConnection = wsConnection.createWSConnection;
 exports.createWSClient = wsConnection.createWSClient;
 
-exports.Multiplexer = require('./multiplexed_protocol').Multiplexer;
+var xhrConnection = require('./xhr_connection');
+exports.XHRConnection = xhrConnection.XHRConnection;
+exports.createXHRConnection = xhrConnection.createXHRConnection;
+exports.createXHRClient = xhrConnection.createXHRClient;
 
-exports.TWebSocketTransport = require('./ws_transport');
-exports.TBufferedTransport = require('./buffered_transport');
-exports.TFramedTransport = require('./framed_transport');
-
-exports.Protocol = exports.TJSONProtocol = require('./json_protocol');
-exports.TBinaryProtocol = require('./binary_protocol');
-exports.TCompactProtocol = require('./compact_protocol');
 
 exports.Int64 = require('node-int64');
 exports.Q = require('q');
+
+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.Protocol = require('./json_protocol');
+exports.TJSONProtocol = require('./json_protocol');
+exports.TBinaryProtocol = require('./binary_protocol');
+exports.TCompactProtocol = require('./compact_protocol');
diff --git a/lib/nodejs/lib/thrift/header_protocol.js b/lib/nodejs/lib/thrift/header_protocol.js
index a037dc2..8971751 100644
--- a/lib/nodejs/lib/thrift/header_protocol.js
+++ b/lib/nodejs/lib/thrift/header_protocol.js
@@ -29,10 +29,9 @@
 
 function THeaderProtocolError(message) {
   Error.call(this);
-  if (Error.captureStackTrace) {
+  if (Error.captureStackTrace !== undefined) {
     Error.captureStackTrace(this, this.constructor);
   }
-
   this.name = this.constructor.name;
   this.message = message;
 }
diff --git a/lib/nodejs/lib/thrift/header_transport.js b/lib/nodejs/lib/thrift/header_transport.js
index 252a423..ec8624b 100644
--- a/lib/nodejs/lib/thrift/header_transport.js
+++ b/lib/nodejs/lib/thrift/header_transport.js
@@ -24,10 +24,9 @@
 
 function THeaderTransportError(message) {
   Error.call(this);
-  if (Error.captureStackTrace) {
+  if (Error.captureStackTrace !== undefined) {
     Error.captureStackTrace(this, this.constructor);
   }
-
   this.name = this.constructor.name;
   this.message = message;
 }
diff --git a/lib/nodejs/lib/thrift/http_connection.js b/lib/nodejs/lib/thrift/http_connection.js
index 81e6b70..17e0d0c 100644
--- a/lib/nodejs/lib/thrift/http_connection.js
+++ b/lib/nodejs/lib/thrift/http_connection.js
@@ -217,7 +217,7 @@
   var opts = self.nodeOptions;
   opts.headers["Content-length"] = data.length;
   if (!opts.headers["Content-Type"])
-    opts.headers["Content-Type"] = "application/x-thrift";  
+    opts.headers["Content-Type"] = "application/x-thrift";
   var req = (self.https) ?
       https.request(opts, self.responseCallback) :
       http.request(opts, self.responseCallback);
@@ -253,7 +253,7 @@
 
 function THTTPException(response) {
   thrift.TApplicationException.call(this);
-  if (Error.captureStackTrace) {
+  if (Error.captureStackTrace !== undefined) {
     Error.captureStackTrace(this, this.constructor);
   }
 
diff --git a/lib/nodejs/lib/thrift/index.js b/lib/nodejs/lib/thrift/index.js
index 0a2d02b..00f2174 100644
--- a/lib/nodejs/lib/thrift/index.js
+++ b/lib/nodejs/lib/thrift/index.js
@@ -58,18 +58,19 @@
 exports.Int64 = require('node-int64');
 exports.Q = require('q');
 
-var mprocessor = require('./multiplexed_processor');
-var mprotocol = require('./multiplexed_protocol');
-exports.Multiplexer = mprotocol.Multiplexer;
-exports.MultiplexedProcessor = mprocessor.MultiplexedProcessor;
+var mpxProcessor = require('./multiplexed_processor');
+var mpxProtocol = require('./multiplexed_protocol');
+exports.MultiplexedProcessor = mpxProcessor.MultiplexedProcessor;
+exports.Multiplexer = mpxProtocol.Multiplexer;
 
 /*
  * Export transport and protocol so they can be used outside of a
  * cassandra/server context
  */
-exports.TFramedTransport = require('./framed_transport');
 exports.TBufferedTransport = require('./buffered_transport');
-exports.TBinaryProtocol = require('./binary_protocol');
+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');
diff --git a/lib/nodejs/lib/thrift/input_buffer_underrun_error.js b/lib/nodejs/lib/thrift/input_buffer_underrun_error.js
index 0e33f5a..e424540 100644
--- a/lib/nodejs/lib/thrift/input_buffer_underrun_error.js
+++ b/lib/nodejs/lib/thrift/input_buffer_underrun_error.js
@@ -22,10 +22,9 @@
 
 function InputBufferUnderrunError(message) {
   Error.call(this);
-  if (Error.captureStackTrace) {
+  if (Error.captureStackTrace !== undefined) {
     Error.captureStackTrace(this, this.constructor);
   }
-
   this.name = this.constructor.name;
   this.message = message;
 };
diff --git a/lib/nodejs/lib/thrift/thrift.js b/lib/nodejs/lib/thrift/thrift.js
index 58d4aff..f728eac 100644
--- a/lib/nodejs/lib/thrift/thrift.js
+++ b/lib/nodejs/lib/thrift/thrift.js
@@ -49,7 +49,7 @@
 
 function TException(message) {
   Error.call(this);
-  if (Error.captureStackTrace) {
+  if (Error.captureStackTrace !== undefined) {
     Error.captureStackTrace(this, this.constructor);
   }
 
@@ -76,7 +76,7 @@
 
 function TApplicationException(type, message) {
   TException.call(this);
-  if (Error.captureStackTrace) {
+  if (Error.captureStackTrace !== undefined) {
     Error.captureStackTrace(this, this.constructor);
   }
 
@@ -155,7 +155,7 @@
 
 function TProtocolException(type, message) {
   Error.call(this);
-  if (Error.captureStackTrace) {
+  if (Error.captureStackTrace !== undefined) {
     Error.captureStackTrace(this, this.constructor);
   }
 
