summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xsrc/nodejs/unit-http/http_server.js14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/nodejs/unit-http/http_server.js b/src/nodejs/unit-http/http_server.js
index c93d2b10..28f2303f 100755
--- a/src/nodejs/unit-http/http_server.js
+++ b/src/nodejs/unit-http/http_server.js
@@ -217,7 +217,19 @@ ServerResponse.prototype._writeBody = function(chunk, encoding, callback) {
}
if (typeof callback === 'function') {
- callback(this);
+ /*
+ * The callback must be called only when response.write() caller
+ * completes. process.nextTick() postpones the callback execution.
+ *
+ * process.nextTick() is not technically part of the event loop.
+ * Instead, the nextTickQueue will be processed after the current
+ * operation completes, regardless of the current phase of
+ * the event loop. All callbacks passed to process.nextTick()
+ * will be resolved before the event loop continues.
+ */
+ process.nextTick(function () {
+ callback(this);
+ }.bind(this));
}
};