Вы вызываете экспресс-обратный вызов сразу после запроса данных, здесь:
forecast.getWeather(req.query.address).then(function(data) {
res.send(data);
});
next();
Попробуйте это:
forecast.getWeather(req.query.address).then(function(data) {
res.send(data);
next();
});
Кроме того, я бы порекомендовал catch
- сообщить об ошибке в вашем маршрутизаторе Express и передать ее в обработчик ошибок Express, чтобы HTTP-запрос не работал должным образом, а не просто зависал:
forecast.getWeather(req.query.address).then(function(data) {
res.send(data);
next();
}).catch(next);
Последняя строка является сокращением для }).catch(err => next(err));
.