DialogFlow V2 Webhook: espera respuestas de voz inmediatamente y no después de solicitudes asíncronas

Tengo un webhook DialogFlow V2 node.js.

Tengo una intención que se llama con una acción webhook:

const { WebhookClient } = require('dialogflow-fulfillment');
const app = new WebhookClient({request: req, response: res});

function exampleIntent(app) {

   app.add("Speak This Out on Google Home!");   // this speaks out fine. no error. 
}

Ahora, si tengo una solicitud asincrónica que finaliza con éxito, y lo hagoapp.add en el bloque de éxito Me gusta esto:

 function exampleIntent(app) {  
      myClient.someAsyncCall(function(result, err) {
          app.add("This will not be spoken out");  // no dice  :(
      }
      // app.add("but here it works... so it expects it immediately");
  }

... entonces Dialog Flow no espera a que se devuelva el discurso. Me sale el error en el objeto Respuesta:

  "message": "Failed to parse Dialogflow response into AppResponse, exception thrown with message: Empty speech response",

¿Cómo puedo hacer que DialogFlow V2 espere a que se completen las operaciones asíncronas de Webhook en lugar de esperar una respuesta de voz de inmediato?

NOTA: Este problema solo comenzó a suceder en V2. En V1, app.ask funcionó bien al final de las llamadas asíncronas.

ejemplo: El mapeador principal de la aplicación está llamando a Intent de la siguiente manera:

let actionMap = new Map();
actionMap.set("my V2 intent name", exampleIntent);
app.handleRequest(actionMap);

Y mi solicitud asíncrona dentro de myClient.someAsyncCall está usando Promesas:

exports.someAsyncCall = function someAsyncCall(callback) {
    var apigClient = getAWSClient(); // uses aws-api-gateway-client
    apigClient.invokeApi(params, pathTemplate, method, additionalParams, body)
    .then(function(result){
        var result = result.data;
        var message = result['message'];
        console.log('SUCCESS: ' + message);
        callback(message, null);  // this succeeds and calls back fine. 
    }).catch( function(error){
        console.log('ERROR: ' + error);
        callback(error, null);
    });
};

Respuestas a la pregunta(1)

Su respuesta a la pregunta