Предположительно проблема вы столкнулись, что http.request
принимает обратный вызов, а не возвращать обещание, так что вы не можете yield
его из коа. Вам нужно обернуть http.request
в функции, которая возвращает обещание и перехватит обещание в обратном вызове, а также закрепит отказ обещания в обработчике ошибок.
function request(opts, body) {
return new Promise((resolve, reject) => {
body.pipe(http.request(opts, resolve))
.on('error', reject);
});
}
... позже в функции коа ...
var response = yield request(opts, body);
Есть так много возможных вариаций на это, что я не мог приблизиться к ним всем перечислениям, но это основная идея :)