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