# File lib/thread_resource_pool.rb, line 97
 97:     def use_resource
 98:       resource = self.current_resource
 99:       unless resource.nil?
100:         return yield(resource)
101:       end
102:       begin
103:         begin
104:           resource = self.current_resource = get_new_resource
105:           return yield(resource)
106:         ensure
107:           self.current_resource = nil
108:         end
109:       ensure
110:         # if thread is terminated by force here, 'current_resource' has already been set to nil
111:         self.current_resource = nil
112:         put_resource_back(resource) unless resource.nil?
113:       end
114:     end