      - returns: The response.
      */
     public func responseData() -> DataResponse<Data> {
-        
-        let semaphore = DispatchSemaphore(value: 0)
-        
-        var result: DataResponse<Data>!
-        
-        self.responseData(queue: DispatchQueue.global(qos: .default)) { response in
-            
-            result = response
-            semaphore.signal()
-            
-        }
-        
-        _ = semaphore.wait(timeout: DispatchTime.distantFuture)
-        
-        return result
+        return response(responseSerializer: DataRequest.dataResponseSerializer())
     }
     
     

     - returns: The response.
     */
    public func responseString(encoding: String.Encoding? = nil) -> DataResponse<String> {
        
        let semaphore = DispatchSemaphore(value: 0)
        
        var result: DataResponse<String>!
        self.responseString(queue: DispatchQueue.global(qos: .default), encoding: encoding){ response in
            
            result = response
            semaphore.signal()
            
        }
        
        _ = semaphore.wait(timeout: DispatchTime.distantFuture)
        
        return result
    }
    
    
    /**
     Wait for the request to finish then return the response value.
     
     - parameter options: The property list reading options. `0` by default.
     
     - returns: The response.
     */
    public func responsePropertyList(options: PropertyListSerialization.ReadOptions = PropertyListSerialization.ReadOptions()) -> DataResponse<Any> {
        
        let semaphore = DispatchSemaphore(value: 0)
        
        var result: DataResponse<Any>!
        
        self.responsePropertyList(queue: DispatchQueue.global(qos: .default), options: options) { response in
            
            result = response
            semaphore.signal()
            
        }
        
        _ = semaphore.wait(timeout: DispatchTime.distantFuture)
        
        return result
    }
}

     - returns: The response.
     */
    public func responseJSON(options: JSONSerialization.ReadingOptions = .allowFragments) -> DataResponse<Any> {
        return response(responseSerializer: DataRequest.jsonResponseSerializer(options: options))
    }
    
    
