def lookup(key, opts={}, &block)
      unless addr = cache.has?(key)
        addr = link.send('lookup', key, opts, &block)
        cache.save(key, addr)
      end
      yield addr if block_given?
      addr
    end
def lookup(key, opts={}, &block)
      unless addr = cache.has?(key)
        addr = link.send('lookup', key, opts, &block)
        cache.save(key, addr)
      end
      yield addr if block_given?
      addr
    end
Initialize can accept custom configuration parameters
 Lookup for a specific service `key`
 passed block is called with the result values
 in case of `http` backend it return the result directly
 @param key [string] identifier of the service