@Override protected void doEnqueue(Callback<V> callback) {
    try {
      future = newCompletionStage()
        .thenApply(this)
        .handleAsync(new CallbackFunction<>(callback))
        .toCompletableFuture();
    } catch (Throwable t) {
      propagateIfFatal(t);
      callback.onError(t);
    }
  }
Defers I/O until {@link #enqueue(Callback)} or {@link #execute()} are called.
zipkin-storage/cassandra/src/main/java/zipkin2/storage/cassandra/internal/call/ResultSetFutureCall.java