async function execute()

in apps/mountebank-mock/mountebank-source/src/models/behaviors.js [521:548]


async function execute (request, response, behaviors, logger, imposterState) {
    const fnMap = {
        wait: wait,
        copy: copy,
        lookup: lookup,
        shellTransform: shellTransform,
        decorate: decorate
    };
    let result = Promise.resolve(response);

    if (!behaviors || behaviors.length === 0 || request.isDryRun) {
        return result;
    }

    logger.debug('using stub response behavior ' + JSON.stringify(behaviors));
    behaviors.forEach(behavior => {
        Object.keys(behavior).forEach(key => {
            if (fnMap[key]) {
                result = result.then(newResponse => fnMap[key](request, newResponse, behavior[key], logger, imposterState));
            }
        });
    });

    const observeBehaviorDuration = metrics.behaviorDuration.startTimer(),
        transformed = await result;
    observeBehaviorDuration({ imposter: logger.scopePrefix });
    return transformed;
}