simple-get
simple-get copied to clipboard
Abort DNS lookup on request abort
https://github.com/feross/simple-get/blob/e7a74115ca9dd28720f186275c5a67df81985426/index.js#L74-L77
This calls abort on the request, and fires the callback. So you'd expect simpleGet to have relinquished all execution back to the caller.
But in a super simple example of simply making a request to some URL, and exiting (nothing more), there is an observed 30s delay between when the callback is called with the error and before the process exits.
I looked into it, and it appears this is caused by the fact that the http module from node defaults to dns.lookup which is not cancellable.
I experimented with swapping this out with Tangerine which maintains an internal AbortController and adding a tangerine.cancel() on any error and it worked flawlessly.
Slight hiccup though - tangerine's peer dependency is undici so it might be unfortunate to pull that in if you're not using it. Ref: https://github.com/feross/simple-get/issues/64
But there's other DNS alternatives that don't require undici. Up to you, just figured I'd mention this here.