docs: public static boolean awaitAll(long timeout, TimeUnit unit, Future<?>... futures) {
  
          try {
              long nanos = unit.toNanos(timeout);
              long time = System.nanoTime();
  
              for (Future<?> f : futures) {
  
                  if (nanos < 0) {
                      return false;
                  }
  
                  f.get(nanos, TimeUnit.NANOSECONDS);
  
                  long now = System.nanoTime();
                  nanos -= now - time;
                  time = now;
              }
  
              return true;
          } catch (RuntimeException e) {
              throw e;
          } catch (TimeoutException e) {
              return false;
          } catch (ExecutionException e) {
  
              if (e.getCause() instanceof RedisCommandExecutionException) {
                  throw ExceptionFactory.createExecutionException(e.getCause().getMessage(), e.getCause());
              }
  
              throw new RedisException(e.getCause());
          } catch (InterruptedException e) {
  
              Thread.currentThread().interrupt();
              throw new RedisCommandInterruptedException(e);
          } catch (Exception e) {
              throw ExceptionFactory.createExecutionException(null, e);
          }
      }