@Override protected O doExecute() throws IOException {
    int length = delegate.size();
    Throwable firstError = null;
    O result = newOutput();
    for (int i = 0; i < length; i++) {
      Call<I> call = delegate.get(i);
      try {
        append(call.execute(), result);
      } catch (Throwable e) {
        if (firstError == null) {
          firstError = e;
        } else if (log.isLoggable(Level.INFO)) {
          log.log(Level.INFO, "error from " + call, e);
        }
      }
    }
    if (firstError == null) return finish(result);
    if (firstError instanceof Error) throw (Error) firstError;
    if (firstError instanceof RuntimeException) throw (RuntimeException) firstError;
    throw (IOException) firstError;
  }
Customizes the aggregated result. For example, summarizing or making immutable.
zipkin/src/main/java/zipkin2/internal/AggregateCall.java