I found this bug report from someone else having similar problems.
From the comments in that report, it looks like Safari is tripping the abusive behavior detection. Rather than disabling it, by setting overheadDataThreshold="2048"
everything now works as expected.
Tomcat documentation regarding these settings here.