def METHOD_NAME(self, sdUUID):
    with self._syncroot:
        while True:
            domain = self.__domainCache.get(sdUUID)
            if domain is not None:
                return domain
            if sdUUID not in self.__inProgress:
                self.__inProgress.add(sdUUID)
                break
            self._syncroot.wait()
    try:
        # If multiple calls reach this point and the storage is not
        # updated the refreshStorage() sampling method is called
        # serializing (and eventually grouping) the requests.
        if self.__staleStatus != self.STORAGE_UPDATED:
            self.refreshStorage()
        domain = self._findDomain(sdUUID)
        with self._syncroot:
            self.__domainCache[sdUUID] = domain
            return domain
    finally:
        with self._syncroot:
            self.__inProgress.remove(sdUUID)
            self._syncroot.notifyAll()