                         success(extraResponse)
                     }
                 } else if failure != nil {
-                    failure(error, nil)
+                    failure(error, extraResponse)
                 }
             })
         opt.task = task

        if let u = self.URL {
            buffer += "URL:\n\(u)\n\n"
        }
        if let heads = self.headers {
            buffer += "Headers:\n"
            for (key, value) in heads {

        let task = session.dataTaskWithRequest(serialReq.request,
            completionHandler: {(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
                opt.finish()
                var extraResponse = HTTPResponse()
                if let hresponse = response as? NSHTTPURLResponse {
                    extraResponse.headers = hresponse.allHeaderFields as? Dictionary<String,String>
                    extraResponse.mimeType = hresponse.MIMEType
                    extraResponse.suggestedFilename = hresponse.suggestedFilename
                    extraResponse.statusCode = hresponse.statusCode
                    extraResponse.URL = hresponse.URL
                }
                if error != nil {
                    if failure != nil {
                        failure(error, extraResponse)
                    }
                    return
                }
