debug timeouts

The way that future pools work is that they return empty promises immediately, but spin off a thread to fulfill the promise.  Instead of trying to fulfil the promise, returning Future.value hopes to short-circuit the promise entirely, but the promise had already been returned.  I actually don't know exactly what the behavior is when you try to drop a stack frame that doesn't exist anymore, but it doesn't sound good!

In general, we should probably avoid having multiple exit points for a given method.  Having multiple exit points makes functions more difficult to reason about.

TL;DR the future never got finished :anguished:

edit: figured out what [happens](http://stackoverflow.com/questions/17754976/scala-return-statements-in-anonymous-functions/17755988#17755988) when you return elsewhere