code: public static <A, B, C, R> Stream<R> parallelZip(final Stream<A> a, final Stream<B> b, final Stream<C> c, final A valueForNoneA, final B valueForNoneB,
              final C valueForNoneC, final TriFunction<? super A, ? super B, ? super C, R> zipFunction) {
          return parallelZip(a, b, c, valueForNoneA, valueForNoneB, valueForNoneC, zipFunction, DEFAULT_QUEUE_SIZE_PER_ITERATOR);
      }
docs: Put the stream in try-catch to stop the back-end reading thread if error happens
  <br />
  <code>
  try (Stream<Integer> stream = Stream.parallelZip(a, b, zipFunction)) {
  stream.forEach(N::println);
  }
  </code>
  
  @param a
  @param b
  @param c
  @param valueForNoneA
  @param valueForNoneB
  @param valueForNoneC
  @param zipFunction
  @return