self.bytesRead += length;
// Optimization: emit the original buffer with end points
+ var ret = true;
if (self.ondata) self.ondata(buffer, offset, end);
- else self._readableState.onread(null, buffer.slice(offset, end));
+ else ret = self.push(buffer.slice(offset, end));
- if (handle.reading && !self._readableState.reading) {
+ if (handle.reading && !ret) {
handle.reading = false;
debug('readStop');
var r = handle.readStop();
if (self.onend) self.once('end', self.onend);
// send a null to the _read cb to signal the end of data.
- self._readableState.onread(null, null);
+ self.push(null);
// internal end event so that we know that the actual socket
// is no longer readable, and we can start the shutdown