При выполнении асинхронных операций (таких как вызовы сетевого API) ваш обработчик намерений должен вернуть Promise, поэтому диспетчер обработчиков знает, что нужно ждать ответа от API, прежде чем отправлять ответ пользователю , В вашем случае, когда ответ возвращается, он пытается отправить его пользователю, но, поскольку ответ уже был отправлен (ни с чем), никто его не видит.
Ваш веб-браузер обрабатывает все локально, поэтому вы не видите тех же проблем (даже если он делает то же самое).
Хотя вы, вероятно, можете обернуть свой код в Promise, более простой способ - использовать что-то вроде request-обещание-native для выполнения HTTP-вызова, сделайте вызов agent.add()
в then()
заблокировать и вернуть общее обещание. Возможно, что-то вроде этого:
function testHandlerPromise(agent){
const rp = require('request-promise-native');
const proxyurl = "https://cors-anywhere.herokuapp.com/";
var theUrl = "http://xxxxx/sum?a=5&b=11";
var url = proxyurl + theUrl;
return rp( url ).then( data => {
agent.add("DATA:" + data);
} );
}