Async exception handling was raising an exception that was creating a cycle in the exception chain (by re-raising an exception in sync_to_async that was already being handled). Thanks Chris Jerdonek for detailed analysis. Backport of d94a9aa0557a459a5b9b7b82a8c043de14f8b1a0 from master