diff --git a/lib/lifeguard/infinite_threadpool.rb b/lib/lifeguard/infinite_threadpool.rb
index <HASH>..<HASH> 100644
--- a/lib/lifeguard/infinite_threadpool.rb
+++ b/lib/lifeguard/infinite_threadpool.rb
@@ -18,11 +18,18 @@ module Lifeguard
 
     def async(*args, &block)
       return false if @shutdown
+      sleep 0.5 if @queued_jobs.size > 1000
       @queued_jobs << { :args => args, :block => block }
 
       return true
     end
 
+    def shutdown(shutdown_timeout = 30)
+      @shutdown = true
+      @scheduler.join
+      super(shutdown_timeout)
+    end
+
     def create_scheduler
       Thread.new do
         while !@shutdown || @queud_jobs.size > 0
Throttle when queue is larger than 1,<I>