diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,15 @@
 
 `pandoc-lua-marshal` uses [PVP Versioning][].
 
+## 0.1.6.1
+
+Released 2022-06-10.
+
+-   Provide better error messages when fuzzy retrieval of Inlines
+    or Blocks fails.
+
+-   Relax upper bound for text, allow text-2.0.
+
 ## 0.1.6
 
 Released 2022-06-03.
diff --git a/pandoc-lua-marshal.cabal b/pandoc-lua-marshal.cabal
--- a/pandoc-lua-marshal.cabal
+++ b/pandoc-lua-marshal.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                pandoc-lua-marshal
-version:             0.1.6
+version:             0.1.6.1
 synopsis:            Use pandoc types in Lua
 description:         This package provides functions to marshal and unmarshal
                      pandoc document types to and from Lua.
@@ -54,7 +54,7 @@
                      , hslua-marshalling     >= 2.1      && < 2.3
                      , pandoc-types          >= 1.22.1   && < 1.23
                      , safe                  >= 0.3      && < 0.4
-                     , text                  >= 1.1.1.0  && < 1.3
+                     , text                  >= 1.1.1.0  && < 1.3   || >= 2.0 && < 2.1
   
   ghc-options:         -Wall
                        -Wcompat
diff --git a/src/Text/Pandoc/Lua/Marshal/Block.hs b/src/Text/Pandoc/Lua/Marshal/Block.hs
--- a/src/Text/Pandoc/Lua/Marshal/Block.hs
+++ b/src/Text/Pandoc/Lua/Marshal/Block.hs
@@ -90,20 +90,22 @@
 -- bare strings as @Str@ values.
 peekBlockFuzzy :: LuaError e
                => Peeker e Block
-peekBlockFuzzy = choice
-  [ peekBlock
-  , \idx -> Plain <$!> peekInlinesFuzzy idx
-  ]
+peekBlockFuzzy idx =
+       peekBlock idx
+  <|> (Plain <$!> peekInlinesFuzzy idx)
+  <|> (failPeek =<<
+       typeMismatchMessage "Block or list of Inlines" idx)
 {-# INLINABLE peekBlockFuzzy #-}
 
 -- | Try extra-hard to return the value at the given index as a list of
 -- inlines.
 peekBlocksFuzzy :: LuaError e
                 => Peeker e [Block]
-peekBlocksFuzzy = choice
-  [ peekList peekBlockFuzzy
-  , (<$!>) pure . peekBlockFuzzy
-  ]
+peekBlocksFuzzy idx =
+      peekList peekBlockFuzzy idx
+  <|> (pure <$!> peekBlockFuzzy idx)
+  <|> (failPeek =<<
+       typeMismatchMessage "Block, list of Blocks, or compatible element" idx)
 {-# INLINABLE peekBlocksFuzzy #-}
 
 -- | Block object type.
diff --git a/src/Text/Pandoc/Lua/Marshal/Inline.hs b/src/Text/Pandoc/Lua/Marshal/Inline.hs
--- a/src/Text/Pandoc/Lua/Marshal/Inline.hs
+++ b/src/Text/Pandoc/Lua/Marshal/Inline.hs
@@ -25,7 +25,7 @@
   , walkInlinesStraight
   ) where
 
-import Control.Applicative (optional)
+import Control.Applicative ((<|>), optional)
 import Control.Monad.Catch (throwM)
 import Control.Monad ((<$!>))
 import Data.Data (showConstr, toConstr)
@@ -93,10 +93,10 @@
                  => Peeker e [Inline]
 peekInlinesFuzzy idx = liftLua (ltype idx) >>= \case
   TypeString -> B.toList . B.text <$> peekText idx
-  _ -> choice
-       [ peekList peekInlineFuzzy
-       , fmap pure . peekInlineFuzzy
-       ] idx
+  _ ->  peekList peekInlineFuzzy idx
+    <|> (pure <$> peekInlineFuzzy idx)
+    <|> (failPeek =<<
+         typeMismatchMessage "Inline, list of Inlines, or string" idx)
 {-# INLINABLE peekInlinesFuzzy #-}
 
 -- | Inline object type.
diff --git a/test/test-block.lua b/test/test-block.lua
--- a/test/test-block.lua
+++ b/test/test-block.lua
@@ -349,6 +349,12 @@
           {'Header', 'CodeBlock'}
         )
       end),
+      test('gives sensible error message', function ()
+        assert.error_matches(
+          function() Blocks(nil) end,
+          'Block, list of Blocks, or compatible element expected'
+        )
+      end)
     },
     group 'walk' {
       test('modifies Inline subelements', function ()
diff --git a/test/test-inline.lua b/test/test-inline.lua
--- a/test/test-inline.lua
+++ b/test/test-inline.lua
@@ -318,6 +318,12 @@
           {'Str', 'Space', 'Str'}
         )
       end),
+      test('gives sensible error message', function ()
+        assert.error_matches(
+          function() Inlines(nil) end,
+          "Inline, list of Inlines, or string"
+        )
+      end)
     },
     group 'walk' {
       test('modifies Inline subelements', function ()
