                     extraResponse.responseObject = responseObject
                     if extraResponse.statusCode > 299 {
                         if failure != nil {
-                            failure(self.createError(extraResponse.statusCode!))
+                            failure(self.createError(extraResponse.statusCode!), extraResponse)
                         }
                     } else if success != nil {
                         success(extraResponse)
                     }
                 } else if failure != nil {
-                    failure(error)
+                    failure(error, nil)
                 }
             })
         opt.task = task

    
        :returns: A freshly constructed HTTPOperation to add to your NSOperationQueue.
    */
    public func create(url: String, method: HTTPMethod, parameters: Dictionary<String,AnyObject>!, success:((HTTPResponse) -> Void)!, failure:((NSError) -> Void)!) ->  HTTPOperation? {

        let serialReq = createRequest(url, method: method, parameters: parameters)
        if serialReq.error != nil {
            if failure != nil {
                failure(serialReq.error!)
            }
            return nil
        }

        if error != nil {
            let blocks = self.backgroundTaskMap[session.configuration.identifier]
            if blocks?.failure != nil { //Swift bug. Can't use && with block (radar: 17469794)
                blocks?.failure!(error, nil)
                cleanupBackground(session.configuration.identifier)
            }
        }
