         }
     }
     
+    public func onDownloadComplete(downloadHandler: ((url: NSURL) -> Void)) {
+        if !self.ticked {
+            self.downloadHandler = downloadHandler
+        } else {
+            self.condition.lock()
+            self.downloadHandler = downloadHandler
+            self.condition.unlock()
+        }
+    }
+    
     /// Tick to get response
     public func tick(completeHandler: ((resp : Response, error: NSError?) -> Void)? = nil) -> Response {
         if let completeHandler = completeHandler {

        return handler
    }
    
    private func waitForComplete() {
        if OSAtomicCompareAndSwap32(1, 1, &self.completed) {
            return

    var HTTPStatusCode: Int = 0
    var errorDescription: NSError? = nil
    var receivedData: [UInt8]? = nil
    var HTTPredirectHistory: [NSURL]? = nil
    var authTriedUsername: [String]? = nil
    
