Support processors that return futures

This allows a server that handles requests by starting async work to handle more in-flight requests than the number of threads in the worker pool