docs: static long getContentLength(SignableRequest<?> request) throws IOException {
          final InputStream content = request.getContent();
          if (!content.markSupported())
              throw new IllegalStateException("Bug: request input stream must have been made mark-and-resettable at this point");
          ReadLimitInfo info = request.getReadLimitInfo();
          final int readLimit = info.getReadLimit();
          long contentLength = 0;
          byte[] tmp = new byte[4096];
          int read;
          content.mark(readLimit);
          while ((read = content.read(tmp)) != -1) {
              contentLength += read;
          }
          try {
              content.reset();
          } catch(IOException ex) {
              throw new ResetException("Failed to reset the input stream", ex);
          }
          return contentLength;
      }