def self.create(label, &blk)
::NewRelic::Agent.logger.debug("Creating New Relic thread: #{label}")
wrapped_blk = Proc.new do
begin
blk.call
rescue => e
::NewRelic::Agent.logger.error("Thread #{label} exited with error", e)
rescue Exception => e
::NewRelic::Agent.logger.error("Thread #{label} exited with exception. Re-raising in case of interrupt.", e)
raise
ensure
::NewRelic::Agent.logger.debug("Exiting New Relic thread: #{label}")
end
end
thread = backing_thread_class.new(&wrapped_blk)
thread[:newrelic_label] = label
thread
end