diff --git a/archive-libarchive.cabal b/archive-libarchive.cabal
--- a/archive-libarchive.cabal
+++ b/archive-libarchive.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.0
 name:          archive-libarchive
-version:       0.2.2.1
+version:       0.2.2.2
 license:       BSD3
 license-file:  LICENSE
 copyright:     Copyright: (c) 2019-2020 Vanessa McHale
@@ -31,7 +31,7 @@
     ghc-options:        -Wall
     build-depends:
         base >=4.3 && <5,
-        libarchive >=2.1.3.0,
+        libarchive >=2.2.1.0,
         bytestring -any,
         composition-prelude -any
 
diff --git a/src/Archive/FFI.cpphs b/src/Archive/FFI.cpphs
--- a/src/Archive/FFI.cpphs
+++ b/src/Archive/FFI.cpphs
@@ -10,6 +10,7 @@
 import qualified Codec.Archive                 as FFI
 import           Codec.Archive.Foreign.Archive (archiveVersionString)
 import           Control.Composition           ((.*))
+import           Control.Exception             (throw)
 import qualified Data.ByteString.Lazy          as BSL
 import qualified Data.Version                  as V
 import qualified Paths_archive_libarchive      as P
@@ -25,8 +26,7 @@
 readArchiveBytes = FFI.readArchiveBSL
 
 unpackToDir :: FilePath -> BSL.ByteString -> IO ()
-unpackToDir = fmap (either showError id) .* FFI.runArchiveM .* FFI.unpackToDirLazy
-    where showError = error . show
+unpackToDir = fmap (either throw id) .* FFI.runArchiveM .* FFI.unpackToDirLazy
 
 packFiles :: [FilePath] -> IO BSL.ByteString
 packFiles = FFI.packFiles
