async def get_raw_key(self, *args, **kwargs) -> Tuple[(Hashable, ...)]:
    if (self.keygen is None):
        raw_key = self.default_keygen(*args, **kwargs)
    else:
        raw_key = self.keygen(**self.get_args_as_kwargs(*args, **kwargs))
        if isinstance(raw_key, tuple):
            raw_key = list(raw_key)
        else:
            raw_key = [raw_key]
        for (i, v) in enumerate(raw_key):
            if inspect.isawaitable(v):
                raw_key[i] = (await v)
        raw_key = tuple(raw_key)
    return raw_key
async def get_raw_key(self, *args, **kwargs) -> Tuple[(Hashable, ...)]:
    if (self.keygen is None):
        raw_key = self.default_keygen(*args, **kwargs)
    else:
        raw_key = self.keygen(**self.get_args_as_kwargs(*args, **kwargs))
        if isinstance(raw_key, tuple):
            raw_key = list(raw_key)
        else:
            raw_key = [raw_key]
        for (i, v) in enumerate(raw_key):
            if inspect.isawaitable(v):
                raw_key[i] = (await v)
        raw_key = tuple(raw_key)
    return raw_key