Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Abort DNS lookup on request abort #84

Copy link
Copy link

Description

@miraclx
Issue body actions

simple-get/index.js

Lines 74 to 77 in e7a7411

req.on('timeout', () => {
req.abort()
cb(new Error('Request timed out'))
})

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: #64

But there's other DNS alternatives that don't require undici. Up to you, just figured I'd mention this here.

Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.