def assign(work)
      Chore.logger.debug { "Manager#assign: No. of UnitsOfWork: #{work.length})" }
      work.each do | item |
        Chore.run_hooks_for(:before_send_to_worker, item)
      end
      @worker_strategy.assign(work) unless @stopping
    end
def assign(work)
      Chore.logger.debug { "Manager#assign: No. of UnitsOfWork: #{work.length})" }
      work.each do | item |
        Chore.run_hooks_for(:before_send_to_worker, item)
      end
      @worker_strategy.assign(work) unless @stopping
    end
Take in an amount of +work+ (either an Array of, or a single UnitOfWork), and pass it down for the
 worker strategy to process. <b>This method is blocking</b>. It will continue to attempt to assign the work via
 the worker strategy, until it accepts it. It is up to the strategy to determine what cases it is allowed to accept
 work. The blocking semantic of this method is to prevent the Fetcher from getting messages off of the queue faster
 than they can be consumed.