# Function addAbortSignal

- addAbortSignal<T>(signal, stream): T

- Attaches an AbortSignal to a readable or writeable stream. This lets code control stream destruction using an `AbortController`.

  Calling `abort` on the `AbortController` corresponding to the passed`AbortSignal` will behave the same way as calling `.destroy(new AbortError())`on the stream.

      const fs = require('fs');

      const controller = new AbortController();
      const read = addAbortSignal(
        controller.signal,
        fs.createReadStream(('object.json'))
      );
      // Later, abort the operation closing the stream
      controller.abort();

  Or using an `AbortSignal` with a readable stream as an async iterable:

      const controller = new AbortController();
      setTimeout(() => controller.abort(), 10_000); // set a timeout
      const stream = addAbortSignal(
        controller.signal,
        fs.createReadStream(('object.json'))
      );
      (async () => {
        try {
          for await (const chunk of stream) {
            await process(chunk);
          }
        } catch (e) {
          if (e.name === 'AbortError') {
            // The operation was cancelled
          } else {
            throw e;
          }
        }
      })();

  #### Type Parameters

  - T extends Stream

  #### Parameters

  - signal: AbortSignal

    A signal representing possible cancellation

  - stream: T

    a stream to attach a signal to

  #### Returns T

  #### Since

  v15.4.0

  - Defined in node_modules/@types/node/stream.d.ts:1302