# File lib/new_relic/agent/datastores.rb, line 105
      def self.wrap(product, operation, collection = nil, callback = nil)
        return yield unless operation

        segment = NewRelic::Agent::Transaction.start_datastore_segment(product, operation, collection)

        begin
          result = yield
        ensure
          if callback
            elapsed_time = (Time.now - segment.start_time).to_f
            callback.call(result, segment.name, elapsed_time)
          end
          segment.finish
        end
      end