Adjust CURLHandle's delegate management purely to ease my understanding
Simplify to a single -completeWithError: bottleneck
Expose handle state and error as properties
Try simplifying how CURLMulti does its work
Remove some testing APIs in favour of .state
Multi enqueues proper cancellation error so don't run handler twice
Simplify CURLHandle to hang onto its multi until cleanup time
Make passing of private Multi object private, testing API
CURLMultiHandle just seems a slightly more appropriate name
Deliver CURLHandle delegate messages on a client-specified queue
Expose CURLMultiHandle's queue
Properly serialize access to _state
Make it clearer how timer functionality is grouped
Expose CURLHandle.originalRequest
Consolidate to a single handle:didCompleteWithError: delegate method
Shift responsibility for cancelling around a little
Single -removeHandle: method
Relax complex requirement of storing CURLM only temporarily
Consolidate timer management code
Remove old -fireTimeoutNow: method