in share/server/render.js [237:276]
function runShow(fun, ddoc, args) {
try {
resetList();
Mime.resetProvides();
var resp = fun.apply(ddoc, args) || {};
resp = maybeWrapResponse(resp);
// handle list() style API
if (chunks.length && chunks.length > 0) {
resp.headers = resp.headers || {};
for(var header in startResp) {
resp.headers[header] = startResp[header];
}
resp.body = chunks.join("") + (resp.body || "");
resetList();
}
if (Mime.providesUsed()) {
var provided_resp = Mime.runProvides(args[1], ddoc) || {};
provided_resp = maybeWrapResponse(provided_resp);
resp.body = (resp.body || "") + chunks.join("");
resp.body += provided_resp.body || "";
resp = applyContentType(resp, Mime.responseContentType());
resetList();
}
var type = typeOf(resp);
if (type == 'object' || type == 'string') {
respond(["resp", maybeWrapResponse(resp)]);
} else {
throw(["error", "render_error", "undefined response from show function"]);
}
} catch(e) {
if (args[0] === null && isDocRequestPath(args[1])) {
throw(["error", "not_found", "document not found"]);
} else {
renderError(e, fun.toString());
}
}
};