diff --git a/lib/size-chunker.js b/lib/size-chunker.js index 401957b..33d7b0f 100644 --- a/lib/size-chunker.js +++ b/lib/size-chunker.js @@ -66,15 +66,17 @@ this._bytesPassed += buf.length; }; - SizeChunker.prototype._startIfNeededAndPushData = function(buf) { + SizeChunker.prototype._startIfNeededAndPushData = function(buf, done) { if (this._lastEmittedChunk != this._currentChunk) { this._startChunk(function() { this._lastEmittedChunk = this._currentChunk; this._pushData(buf); + done(); }.bind(this)) } else { this._pushData(buf); + done(); } }; @@ -89,19 +91,22 @@ if (this._bytesPassed + chunk.length < this._chunkSize) { - this._startIfNeededAndPushData(chunk); - done(); + this._startIfNeededAndPushData(chunk, done); } else { remainder = bytesLeave - chunk.length; if (remainder === 0) { - this._startIfNeededAndPushData(chunk); - this._finishChunk(done); + this._finishChunk(function() { + this._startIfNeededAndPushData(chunk, done); + }.bind(this)); } else { - this._startIfNeededAndPushData(chunk.slice(0, bytesLeave)); - chunk = chunk.slice(bytesLeave); - this._finishChunk(_do_transform); + this._finishChunk(function() { + this._startIfNeededAndPushData(chunk.slice(0, bytesLeave), function() { + chunk = chunk.slice(bytesLeave); + _do_transform(); + }); + }.bind(this)); } }