 					guard let errorResponse = errorResponse else {
 						let requestData = dataCacheProvider.getData()
 						
-						if urlRequest.httpMethod == HttpMethod.get.rawValue, requestCacheMode.cacheResponse, let url = urlRequest.url  {
+						if requestCacheMode.shouldCache(urlRequest), requestCacheMode.cacheResponse, let url = urlRequest.url  {
 							// sache response
 							self?.urlRequestCacheProvider?.save(resourceUrl: url, data: requestData)
 						}

	public let returnCachedResponse: Bool
	/// If true, HttpClient will invoke request
	public let invokeRequest: Bool
	
	public init(cacheResponse: Bool = true, returnCachedResponse: Bool = true, invokeRequest: Bool = true) {
		self.cacheResponse = cacheResponse
		self.returnCachedResponse = returnCachedResponse
		self.invokeRequest = invokeRequest
	}
	
	/// Only cached response will be returned

		let dataCacheProvider = MemoryDataCacheProvider(uid: UUID().uuidString)
		// variable for response with error
		var errorResponse: HTTPURLResponse? = nil
        
		let cachedRequest: Observable<Data> = {
			if requestCacheMode.shouldCache(urlRequest), requestCacheMode.returnCachedResponse, let url = urlRequest.url, let cached = urlRequestCacheProvider?.load(resourceUrl: url) {
				// return cached response
				return Observable.just(cached)
			}
