         }
 
         let session = NSURLSession.sharedSession()
-        session.dataTaskWithRequest(request) { [weak self](data, response, error) in
+        task = session.dataTaskWithURL(request.URL!) { [weak self](data, response, error) in
             convertAllThrowsToResult(result) {
                 if let data = try self?.checkStatusCodeAndData(data, urlResponse: response, error: error) {
                     do {

            }
        }

        task?.resume()
    }

    public func cancel() {

public class JSONService: Service {
    private var task: NSURLSessionDataTask?

    override public func serve<M: Mappable>(order: Order, result: (Result<M>) -> ()) {

        guard let request = order.objectRequestConfiguration(configuration) else {
