# File lib/aws/cacheable.rb, line 48
    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