diff --git a/src/packet/packetlist.js b/src/packet/packetlist.js
index 9e8be05c..460821c2 100644
--- a/src/packet/packetlist.js
+++ b/src/packet/packetlist.js
@@ -36,13 +36,17 @@ Packetlist.prototype.read = function (bytes) {
     var parsed = packetParser.read(bytes, i, bytes.length - i);
     i = parsed.offset;
 
+    var pushed = false;
     try {
       var tag = enums.read(enums.packet, parsed.tag);
       var packet = packets.newPacketFromTag(tag);
       this.push(packet);
+      pushed = true;
       packet.read(parsed.packet);
     } catch(e) {
-      this.pop(); // drop unsupported packet
+      if (pushed) {
+        this.pop(); // drop unsupported packet
+      }
     }
   }
 };