We currently expose Future for asynchronous calls in PubSub and Logging, which creates a problem for thread consumption because every get() call needs a thread while the asynchronous work is outstanding, whereas callbacks (supported by ListenableFuture) don't consume a thread. A potential issue with converting to ListenableFuture is that it makes a Guava class part of our interface. @mziccard , is that why Future was used?