`Resolver` and `NameResolver` should handling timeouts properly for invalid resolver requests

Description

When a timeout happens `uv_cancel()` is called, but the problem is `uv_cancel()` can return `UV_EBUSY` and not cancel the request immediately. Instead timeouts should call the callback immediately and then cancel the request (however, this still causes the loop to pause for the OS's resolve timeout).

Environment

None

Pull Requests

None

Status

Assignee

Unassigned

Reporter

Michael Penick

Labels

None

PM Priority

None

Reproduced in

None

External issue ID

None

Doc Impact

None

Reviewer

None

Pull Request

None

Size

None

Priority

Major
Configure