             }
         }
 
-        let response: Observable<ProgressResponse> = Observable.create { [weak self] observer in
-            let cancellableToken = self?.request(token, queue: nil, progress: progressBlock(observer)) { result in
+        let response: Observable<ProgressResponse> = Observable.create { observer in
+            let cancellableToken = self.request(token, queue: nil, progress: progressBlock(observer)) { result in
                 switch result {
                 case let .success(response):
                     observer.onNext(ProgressResponse(response: response))

    open func request(_ token: Target) -> Observable<Response> {

        // Creates an observable that starts a request each time it's subscribed to.
        return Observable.create { [weak self] observer in
            guard let strongSelf = self else {
                observer.onError(RxError.disposed(object: self?))
            }
            let cancellableToken = strongSelf.request(token) { result in
                switch result {
                case let .success(response):
                    observer.onNext(response)

            }

            return Disposables.create {
                cancellableToken.cancel()
            }
        }

