diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,9 @@
 # Changelog for Hedis
 
+## 0.15.0
+
+* PR #174, Issue #173. Hedis fails to decode xstreamInfo response in case when the stream is empty
+
 ## 0.14.3
 
 * PR #171. Support GHC 9
diff --git a/hedis.cabal b/hedis.cabal
--- a/hedis.cabal
+++ b/hedis.cabal
@@ -1,5 +1,5 @@
 name:               hedis
-version:            0.14.4
+version:            0.15.0
 synopsis:
     Client library for the Redis datastore: supports full command set,
     pipelining.
diff --git a/src/Database/Redis/ManualCommands.hs b/src/Database/Redis/ManualCommands.hs
--- a/src/Database/Redis/ManualCommands.hs
+++ b/src/Database/Redis/ManualCommands.hs
@@ -1154,7 +1154,8 @@
     -> m (f [XInfoGroupsResponse])
 xinfoGroups stream = sendRequest ["XINFO", "GROUPS", stream]
 
-data XInfoStreamResponse = XInfoStreamResponse
+data XInfoStreamResponse 
+    = XInfoStreamResponse
     { xinfoStreamLength :: Integer
     , xinfoStreamRadixTreeKeys :: Integer
     , xinfoStreamRadixTreeNodes :: Integer
@@ -1162,12 +1163,29 @@
     , xinfoStreamLastEntryId :: ByteString
     , xinfoStreamFirstEntry :: StreamsRecord
     , xinfoStreamLastEntry :: StreamsRecord
-    } deriving (Show, Eq)
+    } 
+    | XInfoStreamEmptyResponse
+    { xinfoStreamLength :: Integer
+    , xinfoStreamRadixTreeKeys :: Integer
+    , xinfoStreamRadixTreeNodes :: Integer
+    , xinfoStreamNumGroups :: Integer
+    , xinfoStreamLastEntryId :: ByteString
+    }
+    deriving (Show, Eq)
 
 instance RedisResult XInfoStreamResponse where
     decode = decodeRedis5 <> decodeRedis6
         where
             decodeRedis5 (MultiBulk (Just [
+                 Bulk (Just "length"),Integer xinfoStreamLength,
+                 Bulk (Just "radix-tree-keys"),Integer xinfoStreamRadixTreeKeys,
+                 Bulk (Just "radix-tree-nodes"),Integer xinfoStreamRadixTreeNodes,
+                 Bulk (Just "groups"),Integer xinfoStreamNumGroups,
+                 Bulk (Just "last-generated-id"),Bulk (Just xinfoStreamLastEntryId),
+                 Bulk (Just "first-entry"), Bulk Nothing ,
+                 Bulk (Just "last-entry"), Bulk Nothing ])) = do
+                     return XInfoStreamEmptyResponse{..}
+            decodeRedis5 (MultiBulk (Just [
                 Bulk (Just "length"),Integer xinfoStreamLength,
                 Bulk (Just "radix-tree-keys"),Integer xinfoStreamRadixTreeKeys,
                 Bulk (Just "radix-tree-nodes"),Integer xinfoStreamRadixTreeNodes,
@@ -1180,6 +1198,15 @@
                     return XInfoStreamResponse{..}
             decodeRedis5 a = Left a
 
+            decodeRedis6 (MultiBulk (Just [
+                Bulk (Just "length"),Integer xinfoStreamLength,
+                Bulk (Just "radix-tree-keys"),Integer xinfoStreamRadixTreeKeys,
+                Bulk (Just "radix-tree-nodes"),Integer xinfoStreamRadixTreeNodes,
+                Bulk (Just "last-generated-id"),Bulk (Just xinfoStreamLastEntryId),
+                Bulk (Just "groups"),Integer xinfoStreamNumGroups,
+                Bulk (Just "first-entry"), Bulk Nothing ,
+                Bulk (Just "last-entry"), Bulk Nothing ])) = do
+                    return XInfoStreamEmptyResponse{..}
             decodeRedis6 (MultiBulk (Just [
                 Bulk (Just "length"),Integer xinfoStreamLength,
                 Bulk (Just "radix-tree-keys"),Integer xinfoStreamRadixTreeKeys,
