# File lib/aws/core/cacheable.rb, line 47
      def retrieve_attribute attr, &block
  
        if cache = AWS.response_cache
  
          if cache.resource_cache.cached?(cache_key, attr.name)
            return cache.resource_cache.get(cache_key, attr.name)
          end
  
          cache.select(*attr.request_types).each do |response|
            if attributes = attributes_from_response(response)
              cache.resource_cache.store(cache_key, attributes)
              return attributes[attr.name] if attributes.key?(attr.name)
            end
          end
  
        end
  
        response = yield
  
        if attributes = attributes_from_response(response)
          if cache = AWS.response_cache
            cache.resource_cache.store(cache_key, attributes)
          end
          attributes[attr.name] if attributes.key?(attr.name)
        else
          raise NoData.new("no data in #{response.request_type} response")
        end
      end