Как ответить извне обработчика маршрута hapi.js

у меня естьhapi.js маршрут, где я хочу отложить ответ. Я пытался сохранитьreply функция и вызов его позже, или завернуть его в обещание, но хапи всегда немедленно отвечает ответом 500 Internal Server Error.

Сохраните ответ на потом:

var pendingReplies = {};
server.route({
    method: "POST",
    path: "/",
    handler: function (request, reply) {
        var id = generateId();
        pendingReplies[id] = reply;
    }
});
... // reply later by calling:
function sendResponse(id, data) {
    pendingReplies[id](data);
}

Я пытался создать обещание ответить:

handler: function (request, reply) {
    var id = generateId();
    return new Promise(function (resolve, reject) {
        pendingReplies[id] = resolve;
    }).then(function (data) {
        return reply(data);
    });
}

Я пытался использоватьreply().hold()

handler: function (request, reply) {
    var id = generateId();
    var response = reply().hold();
    pendingReplies[id] = function (data) {
        response.source = data;
        response.send();
    };
    return response;
}

Я пытался использоватьreply().hold() с обещанием:

handler: function (request, reply) {
    var id = generateId();
    var response = reply().hold();
    return new Promise(function (resolve, reject) {
        pendingReplies[id] = resolve;
    }).then(function (data) {
        response.source = data;
        response.send();
        return response;
    });
}

С каждым из них, как только завершается работа с обработчиком, я получаю ответ 500 и следующий вывод в консоли узла:

Debug: internal, implementation, error
    Error: Uncaught error: socket hang up
    at createHangUpError (_http_client.js:198:15)
    at Socket.socketOnEnd (_http_client.js:283:23)
    at emitNone (events.js:72:20)
    at Socket.emit (events.js:163:7)
    at _stream_readable.js:891:16
    at process._tickDomainCallback (node.js:388:13)

Можно ли с помощью хапи отвечать на запрос асинхронно извне обработчика маршрута?

Ответы на вопрос(2)

Ваш ответ на вопрос