я предпочитаю на время тестирования не разбирать на субтипы, мне так легче охватить взором картину происходящего.
Это должно давать ошибку:
Без queries должно принимать только функцию с дефалтными параметрами.
Ну и сообщения об ошибках у тебя ничуть не лучше моих.)
console.log({ fn: async () => {}, val: new Promise((resolve) => setTimeout(resolve, 0)) })
{ setValues: Promise { undefined } }