diff --git a/src/Guzzle/Stream/Stream.php b/src/Guzzle/Stream/Stream.php
index <HASH>..<HASH> 100644
--- a/src/Guzzle/Stream/Stream.php
+++ b/src/Guzzle/Stream/Stream.php
@@ -70,9 +70,7 @@ class Stream implements StreamInterface
      */
     public function __destruct()
     {
-        if (is_resource($this->stream)) {
-            fclose($this->stream);
-        }
+        $this->close();
     }
 
     /**
@@ -92,6 +90,18 @@ class Stream implements StreamInterface
     }
 
     /**
+     * {@inheritdoc}
+     */
+    public function close()
+    {
+        if (is_resource($this->stream)) {
+            fclose($this->stream);
+        }
+        $this->cache[self::IS_READABLE] = false;
+        $this->cache[self::IS_WRITABLE] = false;
+    }
+
+    /**
      * Calculate a hash of a Stream
      *
      * @param StreamInterface $stream    Stream to calculate the hash for
diff --git a/src/Guzzle/Stream/StreamInterface.php b/src/Guzzle/Stream/StreamInterface.php
index <HASH>..<HASH> 100644
--- a/src/Guzzle/Stream/StreamInterface.php
+++ b/src/Guzzle/Stream/StreamInterface.php
@@ -15,6 +15,11 @@ interface StreamInterface
     public function __toString();
 
     /**
+     * Close the underlying stream
+     */
+    public function close();
+
+    /**
      * Get stream metadata
      *
      * @param string $key Specific metadata to retrieve
Adding close() method to stream objects