diff --git a/lib/gateway/Shard.js b/lib/gateway/Shard.js
index <HASH>..<HASH> 100644
--- a/lib/gateway/Shard.js
+++ b/lib/gateway/Shard.js
@@ -110,15 +110,16 @@ class Shard extends EventEmitter {
             this.emit("error", err, this.id);
         }
 
+        this.ws = null;
+        this.reset();
+
         /**
         * Fired when the shard disconnects
         * @event Shard#disconnect
         * @prop {Error?} err The error, if any
         */
         super.emit("disconnect", error || null);
-        this.ws = null;
 
-        this.reset();
         if(options.reconnect === "auto" && this.client.options.autoreconnect) {
             /**
             * Fired when stuff happens and gives more info
Fix shard disconnect event logic (#<I>)