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;
}