diff --git a/lib/queue/worker.js b/lib/queue/worker.js
index <HASH>..<HASH> 100644
--- a/lib/queue/worker.js
+++ b/lib/queue/worker.js
@@ -175,6 +175,8 @@ Worker.prototype.getJob = function(fn){
 
   // BLPOP indicates we have a new inactive job to process
   client.blpop('q:' + self.type + ':jobs', 0, function(err) {
+    // Set job to a temp value so shutdown() knows to wait
+    self.job = true;
     self.zpop('q:jobs:' + self.type + ':inactive', function(err, id){
       if (err) return fn(err);
       if (!id) return fn();
@@ -196,9 +198,6 @@ Worker.prototype.shutdown = function(fn, timeout) {
   if (!this.running) return fn();
   this.running = false;
 
-  // Close redis connection (if zpopping, break it)
-  this.client.end();
-
   // As soon as we're free, signal that we're done
   if (!this.job) return fn();
Fix race condition with blpop/zpop flow & shutdown