diff --git a/src/gc.js b/src/gc.js
index <HASH>..<HASH> 100644
--- a/src/gc.js
+++ b/src/gc.js
@@ -59,6 +59,7 @@ function GarbageCollector(consumer) {
     }
 
     function registerEvents() {
+        unregisterEvents();
         consumer.on(events.GC_SM_QUEUE, (queue) => {
             debug(`Inspecting processing queue [${queue}]... `);
             const { queueName, consumerId } = redisKeys.getKeySegments(queue);
@@ -209,7 +210,6 @@ function GarbageCollector(consumer) {
                     redisClientInstance = null;
                     messageCollector = null;
                     ticker = null;
-                    unregisterEvents();
                     powerStateManager.down();
                     consumer.emit(events.GC_DOWN);
                 });
Always call unregisterEvents() before registering new events

In case of improper shutdown, this will prevent GC from behaving incorrectly (duplicate listeners) and also from memory leakage (accumulating listeners).