1. A method for asynchronously processing natural language utterances, comprising: receiving a natural language utterance at a speech unit connected to a computer device, wherein the speech unit converts the received natural language utterance into an electronic signal; recognizing one or more words in the electronic signal with a speech recognition engine that operates on the computer device; identifying a request contained in the natural language utterance with a parser that further operates on the computer device, wherein the parser identifies the request contained in the natural language utterance from the one or more recognized words; and asynchronously processing the request contained in the natural language utterance in a multi-threaded environment with a domain agent associated with a context relating to the identified request, wherein asynchronously processing the request with the domain agent includes: submitting a plurality of asynchronous queries created with the domain agent to a plurality of information sources, wherein the plurality of information sources include one or more local information sources and one or more network information sources; asynchronously evaluating results that the plurality of information sources return to the domain agent in response to the plurality of asynchronous queries; scoring, at the domain agent, the asynchronously evaluated results returned from the plurality of information sources until one or more of the asynchronously evaluated results have a score that satisfies a predetermined confidence level; and presenting a single best response to the request on the computer device, wherein the domain agent extracts the single best response from the one or more of the asynchronously evaluated results having the score that satisfies the predetermined confidence level.