subtest1(conn, values) е генератор. yield генериращ обект не изпълнява тялото му. Тоест генерираният генератор остава спрян и ще изисква извикване на next() метод за първия yield да се достигне. Няма явни или неявни извиквания на next() в Примерен код 2 и това е причината conn.query(...) не се изпълнява.
Какво ще кажете за yield* subtest1(conn, values)
? От свързаната страница:
Той все пак ще изпълни subtest мързеливо.
Алтернативно решение е да включите subtest в обикновена функция и връща резултата от conn.query(...) (ако приемем, че трябва да извършите само една заявка):
function subtest1(conn, values) {
return conn.query("INSERT INTO version SET ?", values);
}