I'm worried that we are abusing the Future. I think we want a true future, that when in is done, we know the method has completed, and if it fails it becomes an exception.

This can be done by taking a FuturePool in the class constructor, and stay synchronous here (and probably sequential as well, using a semaphore: 
https://github.com/twitter/util/blob/master/util-core/src/main/scala/com/twitter/concurrent/AsyncSemaphore.scala