diff --git a/lib/nodejs/lib/thrift/buffered_transport.js b/lib/nodejs/lib/thrift/buffered_transport.js
index 113e216..f0d5d4a 100644
--- a/lib/nodejs/lib/thrift/buffered_transport.js
+++ b/lib/nodejs/lib/thrift/buffered_transport.js
@@ -24,6 +24,7 @@
 module.exports = TBufferedTransport;
 
 function TBufferedTransport(buffer, callback) {
+  THeaderTransport.call(this);
   this.defaultReadBufferSize = 1024;
   this.writeBufferSize = 512; // Soft Limit
   this.inBuf = new Buffer(this.defaultReadBufferSize);
@@ -34,7 +35,7 @@
   this.onFlush = callback;
 };
 
-TBufferedTransport.prototype = new THeaderTransport();
+Object.setPrototypeOf(TBufferedTransport.prototype, THeaderTransport.prototype);
 
 TBufferedTransport.prototype.reset = function() {
   this.inBuf = new Buffer(this.defaultReadBufferSize);
diff --git a/lib/nodejs/lib/thrift/framed_transport.js b/lib/nodejs/lib/thrift/framed_transport.js
index 0d424d2..9a50a73 100644
--- a/lib/nodejs/lib/thrift/framed_transport.js
+++ b/lib/nodejs/lib/thrift/framed_transport.js
@@ -24,6 +24,7 @@
 module.exports = TFramedTransport;
 
 function TFramedTransport(buffer, callback) {
+  THeaderTransport.call(this);
   this.inBuf = buffer || new Buffer(0);
   this.outBuffers = [];
   this.outCount = 0;
@@ -31,20 +32,20 @@
   this.onFlush = callback;
 };
 
-TFramedTransport.prototype = new THeaderTransport();
+Object.setPrototypeOf(TFramedTransport.prototype, THeaderTransport.prototype);
 
 TFramedTransport.receiver = function(callback, seqid) {
   var residual = [];
-  
+
   return function(data) {
     // push received data to residual
     for(var i = 0; i < data.length; ++i) {
       residual.push(data[i])
     }
 
-    while (residual.length > 0) {      
+    while (residual.length > 0) {
       if (residual.length < 4) {
-		// Not enough bytes to continue, save and resume on next packet
+        // Not enough bytes to continue, save and resume on next packet
         return;
       }
       // get single package sieze
@@ -57,7 +58,7 @@
       // splice first 4 bytes
       residual.splice(0, 4)
       // get package data
-      var frame = Buffer.from(residual.splice(0, frameSize));      
+      var frame = Buffer.from(residual.splice(0, frameSize));
       callback(new TFramedTransport(frame), seqid);
     }
   };
diff --git a/lib/nodejs/test/header.test.js b/lib/nodejs/test/header.test.js
index efd7f81..99bb832 100644
--- a/lib/nodejs/test/header.test.js
+++ b/lib/nodejs/test/header.test.js
@@ -39,6 +39,19 @@
     assert.equals(headers.Trace, "abcde");
     assert.end();
   },
+  "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
+    buf[32] = 122; // Change shoobar to shoobaz
+    transport.inBuf = buf;
+
+    const headers = transport.readHeaders();
+    assert.equals(headers.Parent, undefined);
+    assert.equals(headers.Parens, "shoobaz");
+    assert.equals(headers.Trace, "abcde");
+    assert.end();
+  },
   "Should read headers when reading message begin": function(assert) {
     const transport = new TFramedTransport();
     transport.inBuf = Buffer.from(headerPayload);
@@ -70,6 +83,23 @@
     assert.equals(headers.boobooboo, "fooshoopoo");
     assert.equals(headers.a, "z");
     assert.end();
+  },
+  "Separate transports should have separate headers": function(assert) {
+    const writeTransport = new TFramedTransport();
+    writeTransport.setProtocolId(THeaderTransport.SubprotocolId.BINARY);
+    writeTransport.setWriteHeader("foo", "bar");
+    const headers = writeTransport.getWriteHeaders();
+
+    const otherWriteTransport = new TFramedTransport();
+    otherWriteTransport.setProtocolId(THeaderTransport.SubprotocolId.BINARY);
+    otherWriteTransport.setWriteHeader("otherfoo", "baz");
+    const otherHeaders = otherWriteTransport.getWriteHeaders();
+
+    assert.equals(headers.foo, "bar");
+    assert.equals(headers.otherfoo, undefined);
+    assert.equals(otherHeaders.foo, undefined);
+    assert.equals(otherHeaders.otherfoo, "baz");
+    assert.end();
   }
 };
 
