@@ -827,6 +827,7 @@ const defaultInternals: Options['_internals'] = {
827827 } ,
828828 setHost : true ,
829829 maxHeaderSize : undefined ,
830+ signal : undefined ,
830831 enableUnixSockets : true ,
831832} ;
832833
@@ -1489,6 +1490,38 @@ export default class Options {
14891490 }
14901491 }
14911492
1493+ /**
1494+ You can abort the `request` using [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController).
1495+
1496+ *Requires Node.js 16 or later.*
1497+
1498+ @example
1499+ ```
1500+ import got from 'got';
1501+
1502+ const abortController = new AbortController();
1503+
1504+ const request = got('https://httpbin.org/anything', {
1505+ signal: abortController.signal
1506+ });
1507+
1508+ setTimeout(() => {
1509+ abortController.abort();
1510+ }, 100);
1511+ ```
1512+ */
1513+ // TODO: Replace `any` with `AbortSignal` when targeting Node 16.
1514+ get signal ( ) : any | undefined {
1515+ return this . _internals . signal ;
1516+ }
1517+
1518+ // TODO: Replace `any` with `AbortSignal` when targeting Node 16.
1519+ set signal ( value : any | undefined ) {
1520+ assert . object ( value ) ;
1521+
1522+ this . _internals . signal = value ;
1523+ }
1524+
14921525 /**
14931526 Ignore invalid cookies instead of throwing an error.
14941527 Only useful when the `cookieJar` option has been set. Not recommended.
@@ -2488,5 +2521,6 @@ export default class Options {
24882521 Object . freeze ( options . retry . methods ) ;
24892522 Object . freeze ( options . retry . statusCodes ) ;
24902523 Object . freeze ( options . context ) ;
2524+ Object . freeze ( options . signal ) ;
24912525 }
24922526}
0 commit comments