Duplex streams are streams that implement both the `Readable` and `Writable` interfaces.

Examples of `Duplex` streams include:

- `TCP sockets`
- `zlib streams`
- `crypto streams`

since

  v0.9.4

### Hierarchy

- <internal>.Readable
  - Duplex
    - Socket
    - Transform

### Implements

- <internal>.Writable

## Index

### Constructors

- constructor

### Properties

- allowHalfOpen
- destroyed
- readable
- readableAborted
- readableDidRead
- readableEncoding
- readableEnded
- readableFlowing
- readableHighWaterMark
- readableLength
- readableObjectMode
- writable
- writableCorked
- writableEnded
- writableFinished
- writableHighWaterMark
- writableLength
- writableObjectMode
- captureRejectionSymbol
- captureRejections
- defaultMaxListeners
- errorMonitor

### Methods

- [asyncIterator]
- _construct
- _destroy
- _final
- _read
- _write
- _writev
- addListener
- cork
- destroy
- emit
- end
- eventNames
- getMaxListeners
- isPaused
- listenerCount
- listeners
- off
- on
- once
- pause
- pipe
- prependListener
- prependOnceListener
- push
- rawListeners
- read
- removeAllListeners
- removeListener
- resume
- setDefaultEncoding
- setEncoding
- setMaxListeners
- uncork
- unpipe
- unshift
- wrap
- write
- from
- getEventListeners
- isDisturbed
- listenerCount
- on
- once

## Constructors

### constructor

- new Duplex(opts?: <internal>.DuplexOptions): <internal>.Duplex

- Overrides Readable.constructor

  #### Parameters

  - ##### Optional opts: <internal>.DuplexOptions

  #### Returns <internal>.Duplex

## Properties

### allowHalfOpen

allowHalfOpen: boolean

If `false` then the stream will automatically end the writable side when the readable side ends. Set initially by the `allowHalfOpen` constructor option, which defaults to `false`.

This can be changed manually to change the half-open behavior of an existing`Duplex` stream instance, but must be changed before the `'end'` event is emitted.

since

  v0.9.4

### destroyed

destroyed: boolean

Implementation of Writable.destroyed

Inherited from Readable.destroyed

Is `true` after `readable.destroy()` has been called.

since

  v8.0.0

### readable

readable: boolean

Inherited from Readable.readable

Is `true` if it is safe to call `readable.read()`, which means the stream has not been destroyed or emitted `'error'` or `'end'`.

since

  v11.4.0

### Readonly readableAborted

readableAborted: boolean

Inherited from Readable.readableAborted

Returns whether the stream was destroyed or errored before emitting `'end'`.

since

  v16.8.0

experimental

### Readonly readableDidRead

readableDidRead: boolean

Inherited from Readable.readableDidRead

Returns whether `'data'` has been emitted.

since

  v16.7.0

experimental

### Readonly readableEncoding

readableEncoding: BufferEncoding

Inherited from Readable.readableEncoding

Getter for the property `encoding` of a given `Readable` stream. The `encoding`property can be set using the `readable.setEncoding()` method.

since

  v12.7.0

### Readonly readableEnded

readableEnded: boolean

Inherited from Readable.readableEnded

Becomes `true` when `'end'` event is emitted.

since

  v12.9.0

### Readonly readableFlowing

readableFlowing: boolean

Inherited from Readable.readableFlowing

This property reflects the current state of a `Readable` stream as described in the `Three states` section.

since

  v9.4.0

### Readonly readableHighWaterMark

readableHighWaterMark: number

Inherited from Readable.readableHighWaterMark

Returns the value of `highWaterMark` passed when creating this `Readable`.

since

  v9.3.0

### Readonly readableLength

readableLength: number

Inherited from Readable.readableLength

This property contains the number of bytes (or objects) in the queue ready to be read. The value provides introspection data regarding the status of the `highWaterMark`.

since

  v9.4.0

### Readonly readableObjectMode

readableObjectMode: boolean

Inherited from Readable.readableObjectMode

Getter for the property `objectMode` of a given `Readable` stream.

since

  v12.3.0

### Readonly writable

writable: boolean

Implementation of Writable.writable

### Readonly writableCorked

writableCorked: number

Implementation of Writable.writableCorked

### Readonly writableEnded

writableEnded: boolean

Implementation of Writable.writableEnded

### Readonly writableFinished

writableFinished: boolean

Implementation of Writable.writableFinished

### Readonly writableHighWaterMark

writableHighWaterMark: number

Implementation of Writable.writableHighWaterMark

### Readonly writableLength

writableLength: number

Implementation of Writable.writableLength

### Readonly writableObjectMode

writableObjectMode: boolean

Implementation of Writable.writableObjectMode

### Static Readonly captureRejectionSymbol

captureRejectionSymbol: typeof captureRejectionSymbol

Inherited from Readable.captureRejectionSymbol

### Static captureRejections

captureRejections: boolean

Inherited from Readable.captureRejections

Sets or gets the default captureRejection value for all emitters.

### Static defaultMaxListeners

defaultMaxListeners: number

Inherited from Readable.defaultMaxListeners

### Static Readonly errorMonitor

errorMonitor: typeof errorMonitor

Inherited from Readable.errorMonitor

This symbol shall be used to install a listener for only monitoring `'error'` events. Listeners installed using this symbol are called before the regular `'error'` listeners are called.

Installing a listener using this symbol does not change the behavior once an `'error'` event is emitted, therefore the process will still crash if no regular `'error'` listener is installed.

## Methods

### [asyncIterator]

- [asyncIterator](): AsyncIterableIterator<any>

- Inherited from Readable.[asyncIterator]

  #### Returns AsyncIterableIterator<any>

### Optional _construct

- _construct(callback: (error?: <internal>.Error) => void): void

- Implementation of Writable._construct

  Inherited from Readable._construct

  #### Parameters

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### _destroy

- _destroy(error: <internal>.Error, callback: (error: <internal>.Error) => void): void

- Implementation of Writable._destroy

  Overrides Readable._destroy

  #### Parameters

  - ##### error: <internal>.Error

  - ##### callback: (error: <internal>.Error) => void

    - - (error: <internal>.Error): void

      - #### Parameters

        - ##### error: <internal>.Error

        #### Returns void

### _final

- _final(callback: (error?: <internal>.Error) => void): void

- Implementation of Writable._final

  #### Parameters

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### _read

- _read(size: number): void

- Inherited from Readable._read

  #### Parameters

  - ##### size: number

  #### Returns void

### _write

- _write(chunk: any, encoding: BufferEncoding, callback: (error?: <internal>.Error) => void): void

- Implementation of Writable._write

  #### Parameters

  - ##### chunk: any

  - ##### encoding: BufferEncoding

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### Optional _writev

- _writev(chunks: { chunk: any; encoding: BufferEncoding }[], callback: (error?: <internal>.Error) => void): void

- Implementation of Writable._writev

  #### Parameters

  - ##### chunks: { chunk: any; encoding: BufferEncoding }[]

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### addListener

- addListener(event: "close", listener: () => void): <internal>.Duplex
- addListener(event: "data", listener: (chunk: any) => void): <internal>.Duplex
- addListener(event: "end", listener: () => void): <internal>.Duplex
- addListener(event: "error", listener: (err: <internal>.Error) => void): <internal>.Duplex
- addListener(event: "pause", listener: () => void): <internal>.Duplex
- addListener(event: "readable", listener: () => void): <internal>.Duplex
- addListener(event: "resume", listener: () => void): <internal>.Duplex
- addListener(event: string | symbol, listener: (...args: any[]) => void): <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  Event emitter The defined events on documents including:

  1. close
  2. data
  3. end
  4. error
  5. pause
  6. readable
  7. resume

  #### Parameters

  - ##### event: "close"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  #### Parameters

  - ##### event: "data"

  - ##### listener: (chunk: any) => void

    - - (chunk: any): void

      - #### Parameters

        - ##### chunk: any

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  #### Parameters

  - ##### event: "end"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  #### Parameters

  - ##### event: "error"

  - ##### listener: (err: <internal>.Error) => void

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  #### Parameters

  - ##### event: "pause"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  #### Parameters

  - ##### event: "readable"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  #### Parameters

  - ##### event: "resume"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.addListener

  Inherited from Readable.addListener

  #### Parameters

  - ##### event: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns <internal>.Duplex

### cork

- cork(): void

- Implementation of Writable.cork

  #### Returns void

### destroy

- destroy(error?: <internal>.Error): <internal>.Duplex

- Implementation of Writable.destroy

  Inherited from Readable.destroy

  Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'`event (unless `emitClose` is set to `false`). After this call, the readable stream will release any internal resources and subsequent calls to `push()`will be ignored.

  Once `destroy()` has been called any further calls will be a no-op and no further errors except from `_destroy()` may be emitted as `'error'`.

  Implementors should not override this method, but instead implement `readable._destroy()`.

  since

    v8.0.0

  #### Parameters

  - ##### Optional error: <internal>.Error

    Error which will be passed as payload in `'error'` event

  #### Returns <internal>.Duplex

### emit

- emit(event: "close"): boolean
- emit(event: "data", chunk: any): boolean
- emit(event: "end"): boolean
- emit(event: "error", err: <internal>.Error): boolean
- emit(event: "pause"): boolean
- emit(event: "readable"): boolean
- emit(event: "resume"): boolean
- emit(event: string | symbol, ...args: any[]): boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments to each.

  Returns `true` if the event had listeners, `false` otherwise.

      const EventEmitter = require('events');
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
        console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
        console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
        const parameters = args.join(', ');
        console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      //   [Function: firstListener],
      //   [Function: secondListener],
      //   [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

  #### Parameters

  - ##### event: "close"

  #### Returns boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  #### Parameters

  - ##### event: "data"

  - ##### chunk: any

  #### Returns boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  #### Parameters

  - ##### event: "end"

  #### Returns boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  #### Parameters

  - ##### event: "error"

  - ##### err: <internal>.Error

  #### Returns boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  #### Parameters

  - ##### event: "pause"

  #### Returns boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  #### Parameters

  - ##### event: "readable"

  #### Returns boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  #### Parameters

  - ##### event: "resume"

  #### Returns boolean

- Implementation of Writable.emit

  Inherited from Readable.emit

  #### Parameters

  - ##### event: string | symbol

  - ##### Rest ...args: any[]

  #### Returns boolean

### end

- end(cb?: () => void): <internal>.Duplex
- end(chunk: any, cb?: () => void): <internal>.Duplex
- end(chunk: any, encoding?: BufferEncoding, cb?: () => void): <internal>.Duplex

- Implementation of Writable.end

  #### Parameters

  - ##### Optional cb: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.end

  #### Parameters

  - ##### chunk: any

  - ##### Optional cb: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.end

  #### Parameters

  - ##### chunk: any

  - ##### Optional encoding: BufferEncoding

  - ##### Optional cb: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

### eventNames

- eventNames(): (string | symbol)[]

- Implementation of Writable.eventNames

  Inherited from Readable.eventNames

  Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or `Symbol`s.

      const EventEmitter = require('events');
      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ]

  since

    v6.0.0

  #### Returns (string | symbol)[]

### getMaxListeners

- getMaxListeners(): number

- Implementation of Writable.getMaxListeners

  Inherited from Readable.getMaxListeners

  Returns the current max listener value for the `EventEmitter` which is either set by `emitter.setMaxListeners(n)` or defaults to defaultMaxListeners.

  since

    v1.0.0

  #### Returns number

### isPaused

- isPaused(): boolean

- Inherited from Readable.isPaused

  The `readable.isPaused()` method returns the current operating state of the`Readable`. This is used primarily by the mechanism that underlies the`readable.pipe()` method. In most typical cases, there will be no reason to use this method directly.

      const readable = new stream.Readable();

      readable.isPaused(); // === false
      readable.pause();
      readable.isPaused(); // === true
      readable.resume();
      readable.isPaused(); // === false

  since

    v0.11.14

  #### Returns boolean

### listenerCount

- listenerCount(eventName: string | symbol): number

- Implementation of Writable.listenerCount

  Inherited from Readable.listenerCount

  Returns the number of listeners listening to the event named `eventName`.

  since

    v3.2.0

  #### Parameters

  - ##### eventName: string | symbol

    The name of the event being listened for

  #### Returns number

### listeners

- listeners(eventName: string | symbol): Function[]

- Implementation of Writable.listeners

  Inherited from Readable.listeners

  Returns a copy of the array of listeners for the event named `eventName`.

      server.on('connection', (stream) => {
        console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ]

  since

    v0.1.26

  #### Parameters

  - ##### eventName: string | symbol

  #### Returns Function[]

### off

- off(eventName: string | symbol, listener: (...args: any[]) => void): <internal>.Duplex

- Implementation of Writable.off

  Inherited from Readable.off

  Alias for `emitter.removeListener()`.

  since

    v10.0.0

  #### Parameters

  - ##### eventName: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns <internal>.Duplex

### on

- on(event: "close", listener: () => void): <internal>.Duplex
- on(event: "data", listener: (chunk: any) => void): <internal>.Duplex
- on(event: "end", listener: () => void): <internal>.Duplex
- on(event: "error", listener: (err: <internal>.Error) => void): <internal>.Duplex
- on(event: "pause", listener: () => void): <internal>.Duplex
- on(event: "readable", listener: () => void): <internal>.Duplex
- on(event: "resume", listener: () => void): <internal>.Duplex
- on(event: string | symbol, listener: (...args: any[]) => void): <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  Adds the `listener` function to the end of the listeners array for the event named `eventName`. No checks are made to see if the `listener` has already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple times.

      server.on('connection', (stream) => {
        console.log('someone connected!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  By default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the event listener to the beginning of the listeners array.

      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      //   b
      //   a

  #### Parameters

  - ##### event: "close"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  #### Parameters

  - ##### event: "data"

  - ##### listener: (chunk: any) => void

    - - (chunk: any): void

      - #### Parameters

        - ##### chunk: any

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  #### Parameters

  - ##### event: "end"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  #### Parameters

  - ##### event: "error"

  - ##### listener: (err: <internal>.Error) => void

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  #### Parameters

  - ##### event: "pause"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  #### Parameters

  - ##### event: "readable"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  #### Parameters

  - ##### event: "resume"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.on

  Inherited from Readable.on

  #### Parameters

  - ##### event: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns <internal>.Duplex

### once

- once(event: "close", listener: () => void): <internal>.Duplex
- once(event: "data", listener: (chunk: any) => void): <internal>.Duplex
- once(event: "end", listener: () => void): <internal>.Duplex
- once(event: "error", listener: (err: <internal>.Error) => void): <internal>.Duplex
- once(event: "pause", listener: () => void): <internal>.Duplex
- once(event: "readable", listener: () => void): <internal>.Duplex
- once(event: "resume", listener: () => void): <internal>.Duplex
- once(event: string | symbol, listener: (...args: any[]) => void): <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  Adds a one-time `listener` function for the event named `eventName`. The next time `eventName` is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
        console.log('Ah, we have our first user!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  By default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the event listener to the beginning of the listeners array.

      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      //   b
      //   a

  #### Parameters

  - ##### event: "close"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  #### Parameters

  - ##### event: "data"

  - ##### listener: (chunk: any) => void

    - - (chunk: any): void

      - #### Parameters

        - ##### chunk: any

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  #### Parameters

  - ##### event: "end"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  #### Parameters

  - ##### event: "error"

  - ##### listener: (err: <internal>.Error) => void

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  #### Parameters

  - ##### event: "pause"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  #### Parameters

  - ##### event: "readable"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  #### Parameters

  - ##### event: "resume"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.once

  Inherited from Readable.once

  #### Parameters

  - ##### event: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns <internal>.Duplex

### pause

- pause(): <internal>.Duplex

- Inherited from Readable.pause

  The `readable.pause()` method will cause a stream in flowing mode to stop emitting `'data'` events, switching out of flowing mode. Any data that becomes available will remain in the internal buffer.

      const readable = getReadableStreamSomehow();
      readable.on('data', (chunk) => {
        console.log(`Received ${chunk.length} bytes of data.`);
        readable.pause();
        console.log('There will be no additional data for 1 second.');
        setTimeout(() => {
          console.log('Now data will start flowing again.');
          readable.resume();
        }, 1000);
      });

  The `readable.pause()` method has no effect if there is a `'readable'`event listener.

  since

    v0.9.4

  #### Returns <internal>.Duplex

### pipe

- pipe<T>(destination: T, options?: { end?: boolean }): T

- Implementation of Writable.pipe

  Inherited from Readable.pipe

  #### Type parameters

  - #### T: WritableStream<T>

  #### Parameters

  - ##### destination: T

  - ##### Optional options: { end?: boolean }

    - ##### Optional end?: boolean

  #### Returns T

### prependListener

- prependListener(event: "close", listener: () => void): <internal>.Duplex
- prependListener(event: "data", listener: (chunk: any) => void): <internal>.Duplex
- prependListener(event: "end", listener: () => void): <internal>.Duplex
- prependListener(event: "error", listener: (err: <internal>.Error) => void): <internal>.Duplex
- prependListener(event: "pause", listener: () => void): <internal>.Duplex
- prependListener(event: "readable", listener: () => void): <internal>.Duplex
- prependListener(event: "resume", listener: () => void): <internal>.Duplex
- prependListener(event: string | symbol, listener: (...args: any[]) => void): <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  Adds the `listener` function to the beginning of the listeners array for the event named `eventName`. No checks are made to see if the `listener` has already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple times.

      server.prependListener('connection', (stream) => {
        console.log('someone connected!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  #### Parameters

  - ##### event: "close"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  #### Parameters

  - ##### event: "data"

  - ##### listener: (chunk: any) => void

    - - (chunk: any): void

      - #### Parameters

        - ##### chunk: any

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  #### Parameters

  - ##### event: "end"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  #### Parameters

  - ##### event: "error"

  - ##### listener: (err: <internal>.Error) => void

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  #### Parameters

  - ##### event: "pause"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  #### Parameters

  - ##### event: "readable"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  #### Parameters

  - ##### event: "resume"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependListener

  Inherited from Readable.prependListener

  #### Parameters

  - ##### event: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns <internal>.Duplex

### prependOnceListener

- prependOnceListener(event: "close", listener: () => void): <internal>.Duplex
- prependOnceListener(event: "data", listener: (chunk: any) => void): <internal>.Duplex
- prependOnceListener(event: "end", listener: () => void): <internal>.Duplex
- prependOnceListener(event: "error", listener: (err: <internal>.Error) => void): <internal>.Duplex
- prependOnceListener(event: "pause", listener: () => void): <internal>.Duplex
- prependOnceListener(event: "readable", listener: () => void): <internal>.Duplex
- prependOnceListener(event: "resume", listener: () => void): <internal>.Duplex
- prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  Adds a one-time `listener` function for the event named `eventName` to the_beginning_ of the listeners array. The next time `eventName` is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
        console.log('Ah, we have our first user!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  #### Parameters

  - ##### event: "close"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  #### Parameters

  - ##### event: "data"

  - ##### listener: (chunk: any) => void

    - - (chunk: any): void

      - #### Parameters

        - ##### chunk: any

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  #### Parameters

  - ##### event: "end"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  #### Parameters

  - ##### event: "error"

  - ##### listener: (err: <internal>.Error) => void

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  #### Parameters

  - ##### event: "pause"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  #### Parameters

  - ##### event: "readable"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  #### Parameters

  - ##### event: "resume"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.prependOnceListener

  Inherited from Readable.prependOnceListener

  #### Parameters

  - ##### event: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns <internal>.Duplex

### push

- push(chunk: any, encoding?: BufferEncoding): boolean

- Inherited from Readable.push

  #### Parameters

  - ##### chunk: any

  - ##### Optional encoding: BufferEncoding

  #### Returns boolean

### rawListeners

- rawListeners(eventName: string | symbol): Function[]

- Implementation of Writable.rawListeners

  Inherited from Readable.rawListeners

  Returns a copy of the array of listeners for the event named `eventName`, including any wrappers (such as those created by `.once()`).

      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log');

  since

    v9.4.0

  #### Parameters

  - ##### eventName: string | symbol

  #### Returns Function[]

### read

- read(size?: number): any

- Inherited from Readable.read

  The `readable.read()` method pulls some data out of the internal buffer and returns it. If no data available to be read, `null` is returned. By default, the data will be returned as a `Buffer` object unless an encoding has been specified using the `readable.setEncoding()` method or the stream is operating in object mode.

  The optional `size` argument specifies a specific number of bytes to read. If`size` bytes are not available to be read, `null` will be returned _unless_the stream has ended, in which case all of the data remaining in the internal buffer will be returned.

  If the `size` argument is not specified, all of the data contained in the internal buffer will be returned.

  The `size` argument must be less than or equal to 1 GiB.

  The `readable.read()` method should only be called on `Readable` streams operating in paused mode. In flowing mode, `readable.read()` is called automatically until the internal buffer is fully drained.

      const readable = getReadableStreamSomehow();

      // 'readable' may be triggered multiple times as data is buffered in
      readable.on('readable', () => {
        let chunk;
        console.log('Stream is readable (new data received in buffer)');
        // Use a loop to make sure we read all currently available data
        while (null !== (chunk = readable.read())) {
          console.log(`Read ${chunk.length} bytes of data...`);
        }
      });

      // 'end' will be triggered once when there is no more data available
      readable.on('end', () => {
        console.log('Reached end of stream.');
      });

  Each call to `readable.read()` returns a chunk of data, or `null`. The chunks are not concatenated. A `while` loop is necessary to consume all data currently in the buffer. When reading a large file `.read()` may return `null`, having consumed all buffered content so far, but there is still more data to come not yet buffered. In this case a new `'readable'` event will be emitted when there is more data in the buffer. Finally the `'end'` event will be emitted when there is no more data to come.

  Therefore to read a file's whole contents from a `readable`, it is necessary to collect chunks across multiple `'readable'` events:

      const chunks = [];

      readable.on('readable', () => {
        let chunk;
        while (null !== (chunk = readable.read())) {
          chunks.push(chunk);
        }
      });

      readable.on('end', () => {
        const content = chunks.join('');
      });

  A `Readable` stream in object mode will always return a single item from a call to `readable.read(size)`, regardless of the value of the`size` argument.

  If the `readable.read()` method returns a chunk of data, a `'data'` event will also be emitted.

  Calling read after the `'end'` event has been emitted will return `null`. No runtime error will be raised.

  since

    v0.9.4

  #### Parameters

  - ##### Optional size: number

    Optional argument to specify how much data to read.

  #### Returns any

### removeAllListeners

- removeAllListeners(event?: string | symbol): <internal>.Duplex

- Implementation of Writable.removeAllListeners

  Inherited from Readable.removeAllListeners

  Removes all listeners, or those of the specified `eventName`.

  It is bad practice to remove listeners added elsewhere in the code, particularly when the `EventEmitter` instance was created by some other component or module (e.g. sockets or file streams).

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  since

    v0.1.26

  #### Parameters

  - ##### Optional event: string | symbol

  #### Returns <internal>.Duplex

### removeListener

- removeListener(event: "close", listener: () => void): <internal>.Duplex
- removeListener(event: "data", listener: (chunk: any) => void): <internal>.Duplex
- removeListener(event: "end", listener: () => void): <internal>.Duplex
- removeListener(event: "error", listener: (err: <internal>.Error) => void): <internal>.Duplex
- removeListener(event: "pause", listener: () => void): <internal>.Duplex
- removeListener(event: "readable", listener: () => void): <internal>.Duplex
- removeListener(event: "resume", listener: () => void): <internal>.Duplex
- removeListener(event: string | symbol, listener: (...args: any[]) => void): <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  Removes the specified `listener` from the listener array for the event named`eventName`.

      const callback = (stream) => {
        console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);

  `removeListener()` will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the listener array for the specified `eventName`, then `removeListener()` must be called multiple times to remove each instance.

  Once an event is emitted, all listeners attached to it at the time of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls after emitting and_before_ the last listener finishes execution will not remove them from`emit()` in progress. Subsequent events behave as expected.

      const myEmitter = new MyEmitter();

      const callbackA = () => {
        console.log('A');
        myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
        console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      //   A
      //   B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      //   A

  Because listeners are managed using an internal array, calling this will change the position indices of any listener registered after the listener being removed. This will not impact the order in which listeners are called, but it means that any copies of the listener array as returned by the `emitter.listeners()` method will need to be recreated.

  When a single function has been added as a handler multiple times for a single event (as in the example below), `removeListener()` will remove the most recently added instance. In the example the `once('ping')`listener is removed:

      const ee = new EventEmitter();

      function pong() {
        console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping');

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  #### Parameters

  - ##### event: "close"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  #### Parameters

  - ##### event: "data"

  - ##### listener: (chunk: any) => void

    - - (chunk: any): void

      - #### Parameters

        - ##### chunk: any

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  #### Parameters

  - ##### event: "end"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  #### Parameters

  - ##### event: "error"

  - ##### listener: (err: <internal>.Error) => void

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  #### Parameters

  - ##### event: "pause"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  #### Parameters

  - ##### event: "readable"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  #### Parameters

  - ##### event: "resume"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns <internal>.Duplex

- Implementation of Writable.removeListener

  Inherited from Readable.removeListener

  #### Parameters

  - ##### event: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns <internal>.Duplex

### resume

- resume(): <internal>.Duplex

- Inherited from Readable.resume

  The `readable.resume()` method causes an explicitly paused `Readable` stream to resume emitting `'data'` events, switching the stream into flowing mode.

  The `readable.resume()` method can be used to fully consume the data from a stream without actually processing any of that data:

      getReadableStreamSomehow()
        .resume()
        .on('end', () => {
          console.log('Reached the end, but did not read anything.');
        });

  The `readable.resume()` method has no effect if there is a `'readable'`event listener.

  since

    v0.9.4

  #### Returns <internal>.Duplex

### setDefaultEncoding

- setDefaultEncoding(encoding: BufferEncoding): <internal>.Duplex

- Implementation of Writable.setDefaultEncoding

  #### Parameters

  - ##### encoding: BufferEncoding

  #### Returns <internal>.Duplex

### setEncoding

- setEncoding(encoding: BufferEncoding): <internal>.Duplex

- Inherited from Readable.setEncoding

  The `readable.setEncoding()` method sets the character encoding for data read from the `Readable` stream.

  By default, no encoding is assigned and stream data will be returned as`Buffer` objects. Setting an encoding causes the stream data to be returned as strings of the specified encoding rather than as `Buffer`objects. For instance, calling `readable.setEncoding('utf8')` will cause the output data to be interpreted as UTF-8 data, and passed as strings. Calling`readable.setEncoding('hex')` will cause the data to be encoded in hexadecimal string format.

  The `Readable` stream will properly handle multi-byte characters delivered through the stream that would otherwise become improperly decoded if simply pulled from the stream as `Buffer` objects.

      const readable = getReadableStreamSomehow();
      readable.setEncoding('utf8');
      readable.on('data', (chunk) => {
        assert.equal(typeof chunk, 'string');
        console.log('Got %d characters of string data:', chunk.length);
      });

  since

    v0.9.4

  #### Parameters

  - ##### encoding: BufferEncoding

    The encoding to use.

  #### Returns <internal>.Duplex

### setMaxListeners

- setMaxListeners(n: number): <internal>.Duplex

- Implementation of Writable.setMaxListeners

  Inherited from Readable.setMaxListeners

  By default `EventEmitter`s will print a warning if more than `10` listeners are added for a particular event. This is a useful default that helps finding memory leaks. The `emitter.setMaxListeners()` method allows the limit to be modified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  since

    v0.3.5

  #### Parameters

  - ##### n: number

  #### Returns <internal>.Duplex

### uncork

- uncork(): void

- Implementation of Writable.uncork

  #### Returns void

### unpipe

- unpipe(destination?: WritableStream): <internal>.Duplex

- Inherited from Readable.unpipe

  The `readable.unpipe()` method detaches a `Writable` stream previously attached using the pipe method.

  If the `destination` is not specified, then all pipes are detached.

  If the `destination` is specified, but no pipe is set up for it, then the method does nothing.

      const fs = require('fs');
      const readable = getReadableStreamSomehow();
      const writable = fs.createWriteStream('file.txt');
      // All the data from readable goes into 'file.txt',
      // but only for the first second.
      readable.pipe(writable);
      setTimeout(() => {
        console.log('Stop writing to file.txt.');
        readable.unpipe(writable);
        console.log('Manually close the file stream.');
        writable.end();
      }, 1000);

  since

    v0.9.4

  #### Parameters

  - ##### Optional destination: WritableStream

    Optional specific stream to unpipe

  #### Returns <internal>.Duplex

### unshift

- unshift(chunk: any, encoding?: BufferEncoding): void

- Inherited from Readable.unshift

  Passing `chunk` as `null` signals the end of the stream (EOF) and behaves the same as `readable.push(null)`, after which no more data can be written. The EOF signal is put at the end of the buffer and any buffered data will still be flushed.

  The `readable.unshift()` method pushes a chunk of data back into the internal buffer. This is useful in certain situations where a stream is being consumed by code that needs to "un-consume" some amount of data that it has optimistically pulled out of the source, so that the data can be passed on to some other party.

  The `stream.unshift(chunk)` method cannot be called after the `'end'` event has been emitted or a runtime error will be thrown.

  Developers using `stream.unshift()` often should consider switching to use of a `Transform` stream instead. See the `API for stream implementers` section for more information.

      // Pull off a header delimited by \n\n.
      // Use unshift() if we get too much.
      // Call the callback with (error, header, stream).
      const { StringDecoder } = require('string_decoder');
      function parseHeader(stream, callback) {
        stream.on('error', callback);
        stream.on('readable', onReadable);
        const decoder = new StringDecoder('utf8');
        let header = '';
        function onReadable() {
          let chunk;
          while (null !== (chunk = stream.read())) {
            const str = decoder.write(chunk);
            if (str.match(/\n\n/)) {
              // Found the header boundary.
              const split = str.split(/\n\n/);
              header += split.shift();
              const remaining = split.join('\n\n');
              const buf = Buffer.from(remaining, 'utf8');
              stream.removeListener('error', callback);
              // Remove the 'readable' listener before unshifting.
              stream.removeListener('readable', onReadable);
              if (buf.length)
                stream.unshift(buf);
              // Now the body of the message can be read from the stream.
              callback(null, header, stream);
            } else {
              // Still reading the header.
              header += str;
            }
          }
        }
      }

  Unlike push, `stream.unshift(chunk)` will not end the reading process by resetting the internal reading state of the stream. This can cause unexpected results if `readable.unshift()` is called during a read (i.e. from within a _read implementation on a custom stream). Following the call to `readable.unshift()` with an immediate push will reset the reading state appropriately, however it is best to simply avoid calling `readable.unshift()` while in the process of performing a read.

  since

    v0.9.11

  #### Parameters

  - ##### chunk: any

    Chunk of data to unshift onto the read queue. For streams not operating in object mode, `chunk` must be a string, `Buffer`, `Uint8Array` or `null`. For object mode streams, `chunk` may be any JavaScript value.

  - ##### Optional encoding: BufferEncoding

    Encoding of string chunks. Must be a valid `Buffer` encoding, such as `'utf8'` or `'ascii'`.

  #### Returns void

### wrap

- wrap(stream: ReadableStream): <internal>.Duplex

- Inherited from Readable.wrap

  Prior to Node.js 0.10, streams did not implement the entire `stream` module API as it is currently defined. (See `Compatibility` for more information.)

  When using an older Node.js library that emits `'data'` events and has a pause method that is advisory only, the`readable.wrap()` method can be used to create a `Readable` stream that uses the old stream as its data source.

  It will rarely be necessary to use `readable.wrap()` but the method has been provided as a convenience for interacting with older Node.js applications and libraries.

      const { OldReader } = require('./old-api-module.js');
      const { Readable } = require('stream');
      const oreader = new OldReader();
      const myReader = new Readable().wrap(oreader);

      myReader.on('readable', () => {
        myReader.read(); // etc.
      });

  since

    v0.9.4

  #### Parameters

  - ##### stream: ReadableStream

    An "old style" readable stream

  #### Returns <internal>.Duplex

### write

- write(chunk: any, encoding?: BufferEncoding, cb?: (error: <internal>.Error) => void): boolean
- write(chunk: any, cb?: (error: <internal>.Error) => void): boolean

- Implementation of Writable.write

  #### Parameters

  - ##### chunk: any

  - ##### Optional encoding: BufferEncoding

  - ##### Optional cb: (error: <internal>.Error) => void

    - - (error: <internal>.Error): void

      - #### Parameters

        - ##### error: <internal>.Error

        #### Returns void

  #### Returns boolean

- Implementation of Writable.write

  #### Parameters

  - ##### chunk: any

  - ##### Optional cb: (error: <internal>.Error) => void

    - - (error: <internal>.Error): void

      - #### Parameters

        - ##### error: <internal>.Error

        #### Returns void

  #### Returns boolean

### Static from

- from(src: string | <internal>.Object | Promise<any> | ArrayBuffer | <internal>.Stream | Iterable<any> | AsyncIterable<any> | Blob | AsyncGeneratorFunction): <internal>.Duplex

- Overrides Readable.from

  A utility method for creating duplex streams.

  - `Stream` converts writable stream into writable `Duplex` and readable stream to `Duplex`.
  - `Blob` converts into readable `Duplex`.
  - `string` converts into readable `Duplex`.
  - `ArrayBuffer` converts into readable `Duplex`.
  - `AsyncIterable` converts into a readable `Duplex`. Cannot yield `null`.
  - `AsyncGeneratorFunction` converts into a readable/writable transform `Duplex`. Must take a source `AsyncIterable` as first parameter. Cannot yield `null`.
  - `AsyncFunction` converts into a writable `Duplex`. Must return either `null` or `undefined`
  - `Object ({ writable, readable })` converts `readable` and `writable` into `Stream` and then combines them into `Duplex` where the `Duplex` will write to the `writable` and read from the `readable`.
  - `Promise` converts into readable `Duplex`. Value `null` is ignored.
  since

    v16.8.0

  #### Parameters

  - ##### src: string | <internal>.Object | Promise<any> | ArrayBuffer | <internal>.Stream | Iterable<any> | AsyncIterable<any> | Blob | AsyncGeneratorFunction

  #### Returns <internal>.Duplex

### Static getEventListeners

- getEventListeners(emitter: <internal>.EventEmitter | DOMEventTarget, name: string | symbol): Function[]

- Inherited from Readable.getEventListeners

  Returns a copy of the array of listeners for the event named `eventName`.

  For `EventEmitter`s this behaves exactly the same as calling `.listeners` on the emitter.

  For `EventTarget`s this is the only way to get the event listeners for the event target. This is useful for debugging and diagnostic purposes.

      const { getEventListeners, EventEmitter } = require('events');

      {
        const ee = new EventEmitter();
        const listener = () => console.log('Events are fun');
        ee.on('foo', listener);
        getEventListeners(ee, 'foo'); // [listener]
      }
      {
        const et = new EventTarget();
        const listener = () => console.log('Events are fun');
        et.addEventListener('foo', listener);
        getEventListeners(et, 'foo'); // [listener]
      }

  since

    v15.2.0

  #### Parameters

  - ##### emitter: <internal>.EventEmitter | DOMEventTarget

  - ##### name: string | symbol

  #### Returns Function[]

### Static isDisturbed

- isDisturbed(stream: <internal>.Readable | ReadableStream): boolean

- Inherited from Readable.isDisturbed

  Returns whether the stream has been read from or cancelled.

  since

    v16.8.0

  #### Parameters

  - ##### stream: <internal>.Readable | ReadableStream

  #### Returns boolean

### Static listenerCount

- listenerCount(emitter: <internal>.EventEmitter, eventName: string | symbol): number

- Inherited from Readable.listenerCount

  A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.

      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2

  since

    v0.9.12

  deprecated

    Since v3.2.0 - Use `listenerCount` instead.

  #### Parameters

  - ##### emitter: <internal>.EventEmitter

    The emitter to query

  - ##### eventName: string | symbol

    The event name

  #### Returns number

### Static on

- on(emitter: <internal>.EventEmitter, eventName: string, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>

- Inherited from Readable.on

  ```js const { on, EventEmitter } = require('events');

  (async () => { const ee = new EventEmitter();

  // Emit later on process.nextTick(() => { ee.emit('foo', 'bar'); ee.emit('foo', 42); });

  for await (const event of on(ee, 'foo')) { // The execution of this inner block is synchronous and it // processes one event at a time (even with await). Do not use // if concurrent execution is required. console.log(event); // prints ['bar'] [42] } // Unreachable here })();

      Returns an `AsyncIterator` that iterates `eventName` events. It will throw
      if the `EventEmitter` emits `'error'`. It removes all listeners when
      exiting the loop. The `value` returned by each iteration is an array
      composed of the emitted event arguments.

      An `AbortSignal` can be used to cancel waiting on events:

      ```js
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
          ee.emit('foo', 'bar');
          ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo', { signal: ac.signal })) {
          // The execution of this inner block is synchronous and it
          // processes one event at a time (even with await). Do not use
          // if concurrent execution is required.
          console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
      })();

      process.nextTick(() => ac.abort());

  since

    v13.6.0, v12.16.0

  #### Parameters

  - ##### emitter: <internal>.EventEmitter

  - ##### eventName: string

    The name of the event being listened for

  - ##### Optional options: StaticEventEmitterOptions

  #### Returns AsyncIterableIterator<any>

  that iterates `eventName` events emitted by the `emitter`

### Static once

- once(emitter: NodeEventTarget, eventName: string | symbol, options?: StaticEventEmitterOptions): Promise<any[]>
- once(emitter: DOMEventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>

- Inherited from Readable.once

  Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given event or that is rejected if the `EventEmitter` emits `'error'` while waiting. The `Promise` will resolve with an array of all the arguments emitted to the given event.

  This method is intentionally generic and works with the web platform EventTarget interface, which has no special`'error'` event semantics and does not listen to the `'error'` event.

      const { once, EventEmitter } = require('events');

      async function run() {
        const ee = new EventEmitter();

        process.nextTick(() => {
          ee.emit('myevent', 42);
        });

        const [value] = await once(ee, 'myevent');
        console.log(value);

        const err = new Error('kaboom');
        process.nextTick(() => {
          ee.emit('error', err);
        });

        try {
          await once(ee, 'myevent');
        } catch (err) {
          console.log('error happened', err);
        }
      }

      run();

  The special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the '`error'` event itself, then it is treated as any other kind of event without special handling:

      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();

      once(ee, 'error')
        .then(([err]) => console.log('ok', err.message))
        .catch((err) => console.log('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom

  An `AbortSignal` can be used to cancel waiting for the event:

      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
        try {
          await once(emitter, event, { signal });
          console.log('event emitted!');
        } catch (error) {
          if (error.name === 'AbortError') {
            console.error('Waiting for the event was canceled!');
          } else {
            console.error('There was an error', error.message);
          }
        }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled!

  since

    v11.13.0, v10.16.0

  #### Parameters

  - ##### emitter: NodeEventTarget

  - ##### eventName: string | symbol

  - ##### Optional options: StaticEventEmitterOptions

  #### Returns Promise<any[]>

- Inherited from Readable.once

  #### Parameters

  - ##### emitter: DOMEventTarget

  - ##### eventName: string

  - ##### Optional options: StaticEventEmitterOptions

  #### Returns Promise<any[]>

Generated using TypeDoc