Как я понял твою проблему - если функция асинхронная, то можно ее выполнять в своем потоке. Если синхронная, то нужно новый тред создать под нее.
Чтобы понять, что функция асинхронная, есть конструктор AsyncFunction. Тебе нужно смотреть конструкторы.
async function hello(){}
typeof hello
> "function"
hello.constructor
> function AsyncFunction()
У обычной функции будет, соответственно, Function.
Тогда все Function ты можешь отдавать в тред пул