     
     func progress(callback: Double -> Void) -> Self
         {
-        progressCallbacks.append(callback)
+        addCallback(callback, to: &progressCallbacks, ifAlreadyComplete: 1)
         return self
         }
     

    
    private func addResponseCallback(callback: ResponseCallback)
        {
        if let responseInfo = responseInfo
            {
            // Request already completed. Callback can run immediately, but queue it on the main thread so that the
            // caller can finish their business first.
            
            dispatch_async(dispatch_get_main_queue())
                { callback(responseInfo) }
            }
        else
            {
            // Request not yet completed.
            
            responseCallbacks.append(callback)
            }
        }
    

        for callback in responseCallbacks
            { callback(newInfo) }
        responseCallbacks = []   // Fly, little handlers, be free!
        progressCallbacks = []
        }
    
    private func shouldIgnoreResponse(newResponse: Response) -> Bool
