diff --git a/lib/http/cache.rb b/lib/http/cache.rb
index <HASH>..<HASH> 100644
--- a/lib/http/cache.rb
+++ b/lib/http/cache.rb
@@ -83,7 +83,14 @@ module HTTP
     # Store response in cache
     #
     # @return [nil]
+    #
+    # ---
+    #
+    # We have to convert the response body in to a string body so
+    # that the cache store reading the body will not prevent the
+    # original requester from doing so.
     def store_in_cache(request, response)
+      response.body = response.body.to_s
       @cache_adapter.store(request, response)
       nil
     end
diff --git a/lib/http/response/io_body.rb b/lib/http/response/io_body.rb
index <HASH>..<HASH> 100644
--- a/lib/http/response/io_body.rb
+++ b/lib/http/response/io_body.rb
@@ -17,7 +17,7 @@ module HTTP
 
       # Iterate over the body, allowing it to be enumerable
       def each
-        while part = readpartial # rubocop:disable Lint/AssignmentInCondition
+        while (part = readpartial)
           yield part
         end
       end
allow both original requester and cache store to read response body