docs: protected <T> T attempt(@NotNull final ThrowingSupplier<T, TimeoutException> s) {
  
          @Nullable ConnectionDroppedException t = null;
          @Nullable TimeoutException te = null;
          for (int i = 1; i <= 20; i++) {
  
              try {
                  return s.get();
              } catch (ConnectionDroppedException e) {
                  t = e;
              } catch (TimeoutException e) {
                  te = e;
              }
  
              // pause then resend the request
  
              // do NOT make this value too small, we have to give time of the connection to be
              // re-established
              Jvm.pause(i * 25);
          }
  
          if (t != null)
              throw t;
          throw new ConnectionDroppedException(te);
      }