@@ -14,7 +14,6 @@ const ipaddr = require('ipaddr.js');
14
14
const isStream = require ( 'is-stream' ) ;
15
15
const mergeOptions = require ( 'merge-options' ) ;
16
16
const pMap = require ( 'p-map' ) ;
17
- const pTimeout = require ( 'p-timeout' ) ;
18
17
const pWaitFor = require ( 'p-wait-for' ) ;
19
18
const packet = require ( 'dns-packet' ) ;
20
19
const semver = require ( 'semver' ) ;
@@ -109,8 +108,6 @@ class Tangerine extends dns.promises.Resolver {
109
108
let err ;
110
109
if ( errors . length === 1 ) {
111
110
err = errors [ 0 ] ;
112
- } else if ( errors . every ( ( e ) => e instanceof pTimeout . TimeoutError ) ) {
113
- err = errors [ 0 ] ;
114
111
} else {
115
112
err = new Error (
116
113
[ ...new Set ( errors . map ( ( e ) => e . message ) . filter ( Boolean ) ) ] . join ( '; ' )
@@ -1043,7 +1040,7 @@ class Tangerine extends dns.promises.Resolver {
1043
1040
//
1044
1041
async #request( pkt , server , abortController , timeout = this . options . timeout ) {
1045
1042
// safeguard in case aborted
1046
- if ( abortController ?. signal ?. aborted ) return ;
1043
+ abortController ?. signal ?. throwIfAborted ( ) ;
1047
1044
1048
1045
let localAddress ;
1049
1046
let localPort ;
@@ -1067,15 +1064,17 @@ class Tangerine extends dns.promises.Resolver {
1067
1064
// <https://github.com/hildjj/dohdec/blob/43564118c40f2127af871bdb4d40f615409d4b9c/pkg/dohdec/lib/doh.js#L117-L120>
1068
1065
if ( this . options . requestOptions . method . toLowerCase ( ) === 'get' ) {
1069
1066
if ( ! dohdec ) await pWaitFor ( ( ) => Boolean ( dohdec ) ) ;
1067
+ // safeguard in case aborted
1068
+ abortController ?. signal ?. throwIfAborted ( ) ;
1070
1069
url += `?dns=${ dohdec . DNSoverHTTPS . base64urlEncode ( pkt ) } ` ;
1071
1070
} else {
1072
1071
options . body = pkt ;
1073
1072
}
1074
1073
1075
1074
debug ( 'request' , { url, options } ) ;
1076
- const response = await pTimeout ( this . request ( url , options ) , timeout , {
1077
- signal : abortController . signal
1078
- } ) ;
1075
+ const t = setTimeout ( ( ) => abortController . abort ( ) , timeout ) ;
1076
+ const response = await this . request ( url , options ) ;
1077
+ clearTimeout ( t ) ;
1079
1078
return response ;
1080
1079
}
1081
1080
@@ -1237,9 +1236,7 @@ class Tangerine extends dns.promises.Resolver {
1237
1236
const err = this . constructor . createError (
1238
1237
name ,
1239
1238
rrtype ,
1240
- _err instanceof pTimeout . TimeoutError || _err . name === 'TimeoutError'
1241
- ? dns . TIMEOUT
1242
- : _err . code ,
1239
+ _err . code ,
1243
1240
_err . errno
1244
1241
) ;
1245
1242
// then map it to dns.CONNREFUSED
0 commit comments