Implementing core fc4j 2.0 functionality

[#80392902]
Yeah, this is a little gross. I haven't quite diagrammed out how this whole flow is going, but it's my feeling that futures would simplify this stack a lot in general.

In this particular instance, this could be rewritten as a `new Callable<T> {...}` to avoid the synchronous queue. If an exception is thrown, `Future.get()` will throw an ExecutionException with the cause set.