                     debugPrint(try JSONSerialization.jsonObject(with: self.request.httpBody!, options: [.mutableLeaves, .mutableContainers]))
                 } catch {
                     debugPrint(error)
-                }
-                
+                }                
             }
         #endif
-        
         queue.async {
             
             self.currentSessionDataTask = self.currentSession.dataTask(with: self.request, completionHandler: { (data, response, error) in

    @objc @discardableResult func fetchJSON(readingOptions: JSONSerialization.ReadingOptions = [], success: @escaping (_ response: Any?) -> Void, failure: @escaping ResponseErrorBlock) -> URLSessionDataTask {        
        return self.fetchData(success: { (data) in
            do {
                success(try JSONSerialization.jsonObject(with: data, options: readingOptions))
            } catch {
                failure(ResponseErrorType.decoding)
            }
        }, failure: { (error) in
            failure(error)
        })
    }
}

        
        return self.fetchData(success: { (data) in
            do {
                let jsonObj = try decoder.decode(decodeable, from: data)
                DispatchQueue.main.async {
                    success(jsonObj)
                }
            } catch {
                DispatchQueue.main.async {
                    failure(ResponseErrorType.decoding)
                }                
            }
            
        }, failure: { (error) in
            DispatchQueue.main.async {
                failure(error)
            }
            
        })
        
    }
