simple-get icon indicating copy to clipboard operation
simple-get copied to clipboard

Abort DNS lookup on request abort

Open miraclx opened this issue 1 year ago • 0 comments
trafficstars

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.

miraclx avatar Apr 11 '24 05:04 miraclx