1// workaround for tty output truncation on Node.js
2try {
3    // prevent buffer overflow and other asynchronous bugs
4    process.stdout._handle.setBlocking(true);
5    process.stderr._handle.setBlocking(true);
6} catch (e) {
7    // ensure output buffers are flushed before process termination
8    var exit = process.exit;
9    process.exit = function() {
10        var args = [].slice.call(arguments);
11        process.once("uncaughtException", function() {
12            (function callback() {
13                if (process.stdout.bufferSize || process.stderr.bufferSize) {
14                    setTimeout(callback, 1);
15                } else {
16                    exit.apply(process, args);
17                }
18            })();
19        });
20        throw exit;
21    };
22}
23