code: function needMoreData(state) {
    return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
  }
docs: if it's past the high water mark, we can push in some more. Also, if we have no data yet, we can stand some more bytes.  This is to work around cases where hwm=0, such as the repl.  Also, if the push() triggered a readable event, and the user called read(largeNumber) such that needReadable was set, then we ought to push more, so that another 'readable' event will be triggered.