diff --git a/lib/watchdog.js b/lib/watchdog.js
index <HASH>..<HASH> 100644
--- a/lib/watchdog.js
+++ b/lib/watchdog.js
@@ -27,21 +27,26 @@ WatchDog.prototype.start = function(){
             }
 
             if(err){
-                return self.emit(err);
-            }
-
-            if(job){
+                self.emit(err); //We do want to schedule the timer again even if an error occurs
+            } else if(job){
                 job.fail('Timed out', function(err, job){
                     if(err){
                        return self.emit(err);
                     }
 
                     self.emit('timedout', job.data);
+
+                    //If a job to timeout was found, execute cleanup again immediately to more quickly work
+                    //through a potential backlog of timed out tasks
+                    cleanup();
                 });
+
+                //Prevent scheduling the timer again as we will kick if off again immediately in the callback
+                return;
             }
-        });
 
-        self.timer = setTimeout(cleanup, self.options.interval);
+            self.timer = setTimeout(cleanup, self.options.interval);
+        });
     })();
 };
If the watchdog finds a timedout job, have it check again immediately for more to work through a potential backlog of timed out tasks