docs: public static <V> PnkyPromise<V> first(final Iterable<? extends PnkyPromise<? extends V>> promises)
    {
      final Pnky<V> pnky = Pnky.create();
  
      final AtomicInteger remaining = new AtomicInteger(Iterables.size(promises));
  
      for (final PnkyPromise<? extends V> promise : promises)
      {
        promise.alwaysAccept(new ThrowingBiConsumer<V, Throwable>()
        {
          @Override
          public void accept(final V result, final Throwable error) throws Throwable
          {
            if (error == null)
            {
              // May be called multiple times but the contract guarantees that only the first call
              // will set the value on the promise
              pnky.resolve(result);
            }
            else if (remaining.decrementAndGet() == 0)
            {
              pnky.reject(error);
            }
          }
        });
      }
  
      return pnky;
    }