def close(&blk)
      if @closed
        blk.call if blk
      else
        @closed = true
        @connection_status = {}
        handler = CountedDeferrable.new(@brokers.size)
        handler.callback { blk.call if blk }
        @brokers.each do |b|
          begin
            b.close(propagate = false) { handler.completed_one }
          rescue StandardError => e
            handler.completed_one
            logger.exception("Failed to close broker #{b.alias}", e, :trace)
            @exception_stats.track("close", e)
          end
        end
      end
      true
    end
def close(&blk)
      if @closed
        blk.call if blk
      else
        @closed = true
        @connection_status = {}
        handler = CountedDeferrable.new(@brokers.size)
        handler.callback { blk.call if blk }
        @brokers.each do |b|
          begin
            b.close(propagate = false) { handler.completed_one }
          rescue StandardError => e
            handler.completed_one
            logger.exception("Failed to close broker #{b.alias}", e, :trace)
            @exception_stats.track("close", e)
          end
        end
      end
      true
    end
Close all broker client connections

 === Block
 Optional block with no parameters to be called after all connections are closed

 === Return
 true:: Always return true