     ///   - session: The URL session to use
     ///   - responseQueue: The queue to  send the response on
     ///   - completion: The completion block to call with the response
-    public func perform<T: Parsable>(session: URLSession = URLSession.shared, responseQueue: OperationQueue = OperationQueue.main, completion: @escaping (Result<T>) -> Void) {
+    /// - Returns: A cancellable reference to the request operation
+    @discardableResult
+    public func perform<T: Parsable>(session: URLSession = URLSession.shared, responseQueue: OperationQueue = OperationQueue.main, completion: @escaping (Result<T>) -> Void) -> Cancellable {
         let task = session.dataTask(with: urlRequest(), completionHandler: { data, response, error in
             if let error = error {
                 completion(.failure(error))

    }
}

public extension Request {

    /// Make an HTTP request for the resource described by this `Request`

            }
        })
        task.resume()
        return task
    }
}
