code: public static <T> Promise traverse(List<Supplier<Promise<T>>> queue) {
  
          if (queue.size() == 0) {
              return Promise.success(null);
          }
  
          return queue.remove(0).get()
                  .flatMap(v -> traverse(queue));
      }
docs: Execute promises step by step
  
  @param queue queue of promises
  @param <T>   type of promises
  @return promise