 
 extension Reactive where Base: DownloadRequest {
     
-  public func response() -> Single<DefaultDownloadResponse> {
-    return Single.create { cb in
-      let request = self.base.response {
-        cb(.success($0))
+  public func response() -> Observable<DefaultDownloadResponse> {
+    return Observable.create { observer in
+      let request = self.base.response { response in
+        if let error = response.error {
+          observer.onError(error)
+        } else {
+          observer.onNext(response)
+          observer.onCompleted()
+        }
       }
       return Disposables.create(with: request.cancel)
     }

    queue: DispatchQueue? = nil,
    responseSerializer: Serializer
  )
    -> Single<DownloadResponse<Serializer.SerializedObject>>
  {
    return Single.create { cb in
      let request = self.base.response(
        queue: queue,
        responseSerializer: responseSerializer
      ) {
        cb(.success($0))
      }
        
      return Disposables.create(with: request.cancel)
    }
  }

    queue: DispatchQueue? = nil,
    responseSerializer: Serializer
  )
    -> Observable<Serializer.SerializedObject>
  {
    return responseSerialized(queue: queue, responseSerializer: responseSerializer)
      .map {
        guard let value = $0.value else {
          throw RxAlamofireUnknownError
        }
        return value
      }
  }
}
