java.net.SocketTimeoutException: timeout
at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(SourceFile:675)
at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(SourceFile:684)
at okhttp3.internal.http2.Http2Stream$FramingSource.read(SourceFile:379)
at okhttp3.internal.connection.Exchange$ResponseBodySource.read(SourceFile:276)
at okio.RealBufferedSource.read(SourceFile:189)
at okio.ForwardingSource.read(SourceFile:27)
at okio.HashingSource.read(SourceFile:70)
at okio.ForwardingSource.read(SourceFile:27)
at okio.RealBufferedSource.readAll(SourceFile:284)
at link.infra.packwiz.installer.DownloadTask.download(SourceFile:226)
at link.infra.packwiz.installer.UpdateManager.processIndex$lambda-14$lambda-13(SourceFile:372)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
There's a handler in https://github.com/packwiz/packwiz-installer/blob/b2421cfea768328aa4668c0f1ccebe85e216d81d/src/main/kotlin/link/infra/packwiz/installer/target/ClientHolder.kt#L39 which should catch SocketTimeoutExceptions and retry the request? But I think this seems to only get called when the initial request gets run, not after HTTP2 headers have been sent and the request body is being streamed - see the following stacktrace: