text: 'use strict';
  
  const common = require('../common');
  const { Readable } = require('stream');
  const assert = require('assert');
  
  // basic
  {
    // Find it on Readable.prototype
    assert(Readable.prototype.hasOwnProperty('readableEnded'));
  }
  
  // event
  {
    const readable = new Readable();
  
    readable._read = () => {
      // The state ended should start in false.
      assert.strictEqual(readable.readableEnded, false);
      readable.push('asd');
      assert.strictEqual(readable.readableEnded, false);
      readable.push(null);
      assert.strictEqual(readable.readableEnded, false);
    };
  
    readable.on('end', common.mustCall(() => {
      assert.strictEqual(readable.readableEnded, true);
    }));
  
    readable.on('data', common.mustCall(() => {
      assert.strictEqual(readable.readableEnded, false);
    }));
  }
  
  // Verifies no `error` triggered on multiple .push(null) invocations
  {
    const readable = new Readable();
  
    readable.on('readable', () => { readable.read(); });
    readable.on('error', common.mustNotCall());
    readable.on('end', common.mustCall());
  
    readable.push('a');
    readable.push(null);
    readable.push(null);
  }
  