> For the complete documentation index, see [llms.txt](https://devon-miller.gitbook.io/my-dispatch-user-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devon-miller.gitbook.io/my-dispatch-user-notes/composing_results.md).

# Composing Results

Responses in dispatch are wrapped up in a scala `Future`. The Future represents the potential "result" of the asynchronous http call. The dispatch Future is obtained from a promise inside the dispatch library. dispatch makes an anysnchronous call, completes the promise, which then signals that the Future has a value available. async-http-client can return a java Future, but a java and scala `Future` are different.

When managing responses there are a few ways to manage the `Future` value as well as the body. This section is about composing results which is really about composing Future's. You can find a bounty of literature on composing Futures on the web and we are not try to repeat or summarize that corpus here.

There are a few topics though:

* Future management with dispatch's Future's enhancements
* async macro
* Miscellaneous Topics
  * Retries
  * Interrupting requests (TODO)

Note that composing results really means composing the "containers" that hold our results, which in this case is a scala Future. This chapter will cover a few ways of composing Futures such as the use of scala async, however, there are libraries such as `fetch` that have been created to compose functions that have high latency--which is often the case for http calls. These are covered in another chapter.
