GET /урл_который_запрашиваешь HTTP/2.0
Имя-Заголовка: ЗначениеЗаголовка
... тут может быть много заголовков
После пустой строки идёт тело запроса: данные формы или загружаемый файл, если они есть. Его длина определяется по переданному заголовку Content-Length.
Так что если нужны лимиты на RPS, т.е. троттлинг, то это легко реализуется асинхронно. У меня в ответах даже есть пример реализации. Лучше всё перетащить на асинхрон - или не перетаскивать ничего.