@startuml hide empty description [*] -right-> appendHeaderCallback appendHeaderCallback -right-> writeCallback : Success appendHeaderCallback -down-> errorCallback : Application cancels the request writeCallback -down-> readReadyCallback : Success in network send writeCallback -down-> errorCallback : Failure in network send \nor application cancels the request readReadyCallback -down-> responseCompleteCallback : Success in everything and a \npersistent request readReadyCallback -left-> errorCallback : Failure in network receive, response parsing, or the application cancels the request readReadyCallback -down-> connectionCloseCallback : Success in everything and a \nnon-persistent request errorCallback -down-> connectionCloseCallback : Network error or \nresponse parsing error errorCallback -down-> responseCompleteCallback : Application cancels the requset connectionCloseCallback -down-> responseCompleteCallback : Always responseCompleteCallback -right-> [*] @enduml