docs: function Reader(input) {
    this.stream = input;
    if (input[externalBuffer]) {
      this[externalBuffer] = input[externalBuffer].slice();
    }
    let streamType = streams.isStream(input);
    if (streamType === 'node') {
      input = streams.nodeToWeb(input);
    }
    if (streamType) {
      const reader = input.getReader();
      this._read = reader.read.bind(reader);
      this._releaseLock = () => {
        reader.closed.catch(function() {});
        reader.releaseLock();
      };
      return;
    }
    let doneReading = false;
    this._read = async () => {
      if (doneReading || doneReadingSet.has(input)) {
        return { value: undefined, done: true };
      }
      doneReading = true;
      return { value: input, done: false };
    };
    this._releaseLock = () => {
      if (doneReading) {
        try {
          doneReadingSet.add(input);
        } catch(e) {}
      }
    };
  }