marshal query is a list of context-buffer pairs corresponding to the channel contexts and request buffers with which to attempt DNS requests. Requests are made in parallel and the first response to successfully parse is returned as the answer. Lagging requests are kept running until successful parse or timeout. With this behavior, it is easy to construct low-latency but network-environment-aware DNS resolvers.
parse ctxt buf is the potential packet extracted out of
val timeout : context -> exn
timeout ctxt is the exception resulting from a context
ctxt that has timed-out