@Override public V apply(V input, @Nullable Throwable error) {
      if (error != null) {
        callback.onError(error);
        return input;
      }
      try {
        callback.onSuccess(input);
      } catch (Throwable t) {
        propagateIfFatal(t);
        callback.onError(t);
      }
      return input;
    }
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