понял проблему. Первая проблема была, как @vipul указал выше. res был ответом на вызов, а не экземпляром глобального объекта HttpResponse, поэтому метод отправки не был доступен для этого объекта. Я изменил метод,
request(options, (err, response, body) => {
if (err) { return console.log(err); }
//want to send this body to the page.
console.log(JSON.stringify(response.body));
// using the HttpResponse in global context.
this.res.send(JSON.parse(body));
});
Затем я столкнулся с ошибкой ниже,
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client]
Проблема была во время выполнения обратного вызова, я возвращал ответ сразу после обратного вызова метода.
.get('/authorize', (req, res) => {
console.log('Authorize Hit! '+req.query.code);
try {
//TODO: Need to utilize state to the current flow in action.
let flowDetails = flow.flowMap.get('wsf');
if(flowDetails) {
//this method makes REST API call
flowDetails.refreshToken(req, res);
//this line was the problem!! Removed it to fix the error.
res.send('Refresh Token Completed!');
}
} catch (error) {
(Object.keys(error).length === 0)?res.send(error.message):res.send(error);
}
})
Но из-за асинхронного характера функции обратного вызова к моменту получения ответа на обратный вызов фактический запрос / ответ уже был возвращен, и запрос был выполнен. Поэтому удалите res.send сразу после вызова, чтобы исправить проблему.
Надеюсь, это будет полезно и другим:)