Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions build/files.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,14 +125,14 @@ const headRegexp = /(^module.exports = \w+;?)/m
, `$1

/*<replacement>*/
var processNextTick = require(\'process-nextick-args\').nextTick;
var pna = require(\'process-nextick-args\');
/*</replacement>*/
`
]

, processNextTickReplacement = [
/process.nextTick\(/g
, 'processNextTick('
, 'pna.nextTick('
]

, internalUtilReplacement = [
Expand All @@ -145,12 +145,12 @@ const headRegexp = /(^module.exports = \w+;?)/m
, `$1

/*<replacement>*/
var asyncWrite = !process.browser && ['v0.10' , 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
var asyncWrite = !process.browser && ['v0.10' , 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
/*</replacement>*/
`
]
, fixSyncWrite = [
/if \(sync\) {\n\s+processNextTick\(afterWrite, stream, state, finished, cb\);\n\s+}/
/if \(sync\) {\n\s+pna.nextTick\(afterWrite, stream, state, finished, cb\);\n\s+}/
, `if (sync) {
/*<replacement>*/
asyncWrite(afterWrite, stream, state, finished, cb);
Expand Down
6 changes: 3 additions & 3 deletions lib/_stream_duplex.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

/*<replacement>*/

var processNextTick = require('process-nextick-args').nextTick;
var pna = require('process-nextick-args');
/*</replacement>*/

/*<replacement>*/
Expand Down Expand Up @@ -82,7 +82,7 @@ function onend() {

// no more data can be written.
// But allow more writes to happen in this tick.
processNextTick(onEndNT, this);
pna.nextTick(onEndNT, this);
}

function onEndNT(self) {
Expand Down Expand Up @@ -114,7 +114,7 @@ Duplex.prototype._destroy = function (err, cb) {
this.push(null);
this.end();

processNextTick(cb, err);
pna.nextTick(cb, err);
};

function forEach(xs, f) {
Expand Down
14 changes: 7 additions & 7 deletions lib/_stream_readable.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

/*<replacement>*/

var processNextTick = require('process-nextick-args').nextTick;
var pna = require('process-nextick-args');
/*</replacement>*/

module.exports = Readable;
Expand Down Expand Up @@ -495,7 +495,7 @@ function emitReadable(stream) {
if (!state.emittedReadable) {
debug('emitReadable', state.flowing);
state.emittedReadable = true;
if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
}
}

Expand All @@ -514,7 +514,7 @@ function emitReadable_(stream) {
function maybeReadMore(stream, state) {
if (!state.readingMore) {
state.readingMore = true;
processNextTick(maybeReadMore_, stream, state);
pna.nextTick(maybeReadMore_, stream, state);
}
}

Expand Down Expand Up @@ -559,7 +559,7 @@ Readable.prototype.pipe = function (dest, pipeOpts) {
var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;

var endFn = doEnd ? onend : unpipe;
if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);

dest.on('unpipe', onunpipe);
function onunpipe(readable, unpipeInfo) {
Expand Down Expand Up @@ -749,7 +749,7 @@ Readable.prototype.on = function (ev, fn) {
state.readableListening = state.needReadable = true;
state.emittedReadable = false;
if (!state.reading) {
processNextTick(nReadingNextTick, this);
pna.nextTick(nReadingNextTick, this);
} else if (state.length) {
emitReadable(this);
}
Expand Down Expand Up @@ -780,7 +780,7 @@ Readable.prototype.resume = function () {
function resume(stream, state) {
if (!state.resumeScheduled) {
state.resumeScheduled = true;
processNextTick(resume_, stream, state);
pna.nextTick(resume_, stream, state);
}
}

Expand Down Expand Up @@ -988,7 +988,7 @@ function endReadable(stream) {

if (!state.endEmitted) {
state.ended = true;
processNextTick(endReadableNT, state, stream);
pna.nextTick(endReadableNT, state, stream);
}
}

Expand Down
16 changes: 8 additions & 8 deletions lib/_stream_writable.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

/*<replacement>*/

var processNextTick = require('process-nextick-args').nextTick;
var pna = require('process-nextick-args');
/*</replacement>*/

module.exports = Writable;
Expand All @@ -54,7 +54,7 @@ function CorkedRequest(state) {
/* </replacement> */

/*<replacement>*/
var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
/*</replacement>*/

/*<replacement>*/
Expand Down Expand Up @@ -288,7 +288,7 @@ function writeAfterEnd(stream, cb) {
var er = new Error('write after end');
// TODO: defer error events consistently everywhere, not just the cb
stream.emit('error', er);
processNextTick(cb, er);
pna.nextTick(cb, er);
}

// Checks that a user-supplied chunk is valid, especially for the particular
Expand All @@ -305,7 +305,7 @@ function validChunk(stream, state, chunk, cb) {
}
if (er) {
stream.emit('error', er);
processNextTick(cb, er);
pna.nextTick(cb, er);
valid = false;
}
return valid;
Expand Down Expand Up @@ -425,10 +425,10 @@ function onwriteError(stream, state, sync, er, cb) {
if (sync) {
// defer the callback if we are being called synchronously
// to avoid piling up things on the stack
processNextTick(cb, er);
pna.nextTick(cb, er);
// this can emit finish, and it will always happen
// after error
processNextTick(finishMaybe, stream, state);
pna.nextTick(finishMaybe, stream, state);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
} else {
Expand Down Expand Up @@ -603,7 +603,7 @@ function prefinish(stream, state) {
if (typeof stream._final === 'function') {
state.pendingcb++;
state.finalCalled = true;
processNextTick(callFinal, stream, state);
pna.nextTick(callFinal, stream, state);
} else {
state.prefinished = true;
stream.emit('prefinish');
Expand All @@ -627,7 +627,7 @@ function endWritable(stream, state, cb) {
state.ending = true;
finishMaybe(stream, state);
if (cb) {
if (state.finished) processNextTick(cb);else stream.once('finish', cb);
if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
}
state.ended = true;
stream.writable = false;
Expand Down
6 changes: 3 additions & 3 deletions lib/internal/streams/destroy.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

/*<replacement>*/

var processNextTick = require('process-nextick-args').nextTick;
var pna = require('process-nextick-args');
/*</replacement>*/

// undocumented cb() API, needed for core, not for public API
Expand All @@ -16,7 +16,7 @@ function destroy(err, cb) {
if (cb) {
cb(err);
} else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
processNextTick(emitErrorNT, this, err);
pna.nextTick(emitErrorNT, this, err);
}
return this;
}
Expand All @@ -35,7 +35,7 @@ function destroy(err, cb) {

this._destroy(err || null, function (err) {
if (!cb && err) {
processNextTick(emitErrorNT, _this, err);
pna.nextTick(emitErrorNT, _this, err);
if (_this._writableState) {
_this._writableState.errorEmitted = true;
}
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"assert": "^1.4.0",
"babel-polyfill": "^6.9.1",
"buffer": "^4.9.0",
"lolex": "^2.3.2",
"nyc": "^6.4.0",
"tap": "^0.7.0",
"tape": "^4.8.0",
Expand Down
39 changes: 39 additions & 0 deletions test/ours/lolex-fake-timers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
require('../common');
var util = require('util');
var assert = require('assert');
var lolex = require('lolex');
var stream = require('../../');
var Transform = stream.Transform;

function MyTransform() {
Transform.call(this);
}

util.inherits(MyTransform, Transform);

const clock = lolex.install({toFake: [ 'setImmediate', 'nextTick' ]});
let stream2DataCalled = false;

var stream = new MyTransform();
stream.on('data', function() {
stream.on('end', function() {

var stream2 = new MyTransform();
stream2.on('data', function() {
stream2.on('end', function() {
stream2DataCalled = true
});
setImmediate(function() {
stream2.end()
});
});
stream2.emit('data')

});
stream.end();
});
stream.emit('data');

clock.runAll()
clock.uninstall();
assert(stream2DataCalled);