The node:dns/promises surface this resolver needs, injectable so every
branch is unit-testable without real DNS or network permission.
Note resolveSrv yields records whose target field is named name —
Deno spells the same field target, which is why neither shape escapes
this package.
resolveSrv(hostname: string): Promise<{ name: string; port: number; priority: number; weight: number; }[]>
Resolves SRV records.
resolve4(hostname: string): Promise<string[]>
Resolves IPv4 addresses.
resolve6(hostname: string): Promise<string[]>
Resolves IPv6 addresses.