def _handle_func(self, value, rule, path, done=None):
        func = rule.func
        if not func:
            return
        found_method = False
        for extension in self.loaded_extensions:
            method = getattr(extension, func, None)
            if method:
                found_method = True
                ret = method(value, rule, path)
                if ret is not True and ret is not None:
                    msg = '%s. Path: {path}' % unicode(ret)
                    self.errors.append(SchemaError.SchemaErrorEntry(
                                    msg=msg,
                                    path=path,
                                    value=None))
                if not ret:
                    raise CoreError(u"Error when running extension function : {0}".format(func))
                break
        if not found_method:
            raise CoreError(u"Did not find method '{0}' in any loaded extension file".format(func))