| @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 |