function defineCachedGet(proto, prop, name) {
	const hname = '_' + name;
	Object.defineProperty(proto, name, {
		get: function() {
			if (this[hname] == undefined) this[hname] = this[prop][name];
			return this[hname];
		}
	});
}

module.exports = class Response {
	constructor(view, binding) {
		this.binding = binding;
		this.view = view;
		for (const name of ["uri", "status", "mime", "headers", "length", "filename", "stall"]) {
			defineCachedGet(Response.prototype, "binding", name);
		}
	}
	data(cb) {
		if (!cb) throw new Error("Missing callback");
		this.binding.data(cb);
		return this;
	}
};

@@ -1,16 +1,246 @@
+class Response %7B%0A%09constructor(view, binding) %7B%0A%09%09this.binding = binding;%0A%09%09this.view = view;%0A%09%7D%0A%09data(cb) %7B%0A%09%09if (!cb) throw new Error(%22Missing callback%22);%0A%09%09this.binding.data(cb);%0A%09%09return this;%0A%09%7D%0A%7D%0A%0Amodule.exports = Response;%0A%0A
 function defineC
@@ -458,120 +458,8 @@
 %0A%7D%0A%0A
-module.exports = class Response %7B%0A%09constructor(view, binding) %7B%0A%09%09this.binding = binding;%0A%09%09this.view = view;%0A%09%09
 for 
@@ -544,18 +544,16 @@
 ll%22%5D) %7B%0A
-%09%09
 %09defineC
@@ -603,117 +603,7 @@
 e);%0A
-%09%09%7D%0A%09%7D%0A%09data(cb) %7B%0A%09%09if (!cb) throw new Error(%22Missing callback%22);%0A%09%09this.binding.data(cb);%0A%09%09return this;%0A%09%7D%0A%7D;
+%7D%0A
 %0A

Set getters outside constructor