diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,5 @@
+# Revision history for `pipes-lzma`
+
+## 0.2.0.0 -- 2019-10-15
+
+* `decompress` and `decompressWith` now `throw` decompression errors instead of using `fail`.
diff --git a/pipes-lzma.cabal b/pipes-lzma.cabal
--- a/pipes-lzma.cabal
+++ b/pipes-lzma.cabal
@@ -1,5 +1,5 @@
 name:                pipes-lzma
-version:             0.1.1.2
+version:             0.2.0.0
 synopsis:            LZMA compressors and decompressors for the Pipes package
 description:
     This package provides a @pipes@ interface to the LZMA compression algorithm
@@ -13,7 +13,8 @@
 category:            Codec
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:         GHC ==7.8.4, GHC ==7.10.3, GHC == 8.0.1
+tested-with:         GHC ==7.8.4, GHC ==7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.5, GHC == 8.8.3
+extra-source-files:  ChangeLog.md
 
 source-repository head
   type:                git
@@ -21,9 +22,10 @@
 
 library
   exposed-modules:     Pipes.Lzma
-  build-depends:       base >=4.6 && <4.11,
+  build-depends:       base >=4.6 && <4.15,
                        bytestring >=0.10 && <0.11,
                        pipes >=4.0 && <4.4,
+                       exceptions >=0.10 && <0.11,
                        lzma >=0.0.0.1 && <0.1
   hs-source-dirs:      src
   default-language:    Haskell2010
diff --git a/src/Pipes/Lzma.hs b/src/Pipes/Lzma.hs
--- a/src/Pipes/Lzma.hs
+++ b/src/Pipes/Lzma.hs
@@ -34,16 +34,17 @@
 import qualified Data.ByteString as BS
 import qualified Codec.Compression.Lzma as Lzma
 import Data.Monoid (mempty)
+import Control.Monad.Catch
 import Prelude
 
 -- | Decompress a 'ByteString'.
-decompress :: forall m r. MonadIO m
+decompress :: forall m r. (MonadIO m, MonadThrow m)
            => Producer ByteString m r
            -> Producer ByteString m (Producer ByteString m r)
 decompress = decompressWith Lzma.defaultDecompressParams
 
 -- | Decompress a 'ByteString' with a given set of 'Lzma.DecompressParams'.
-decompressWith :: forall m r. MonadIO m
+decompressWith :: forall m r. (MonadIO m, MonadThrow m)
                => Lzma.DecompressParams
                -> Producer ByteString m r
                -> Producer ByteString m (Producer ByteString m r)
@@ -67,7 +68,7 @@
     go prod (Lzma.DecompressStreamError Lzma.LzmaRetOK) =
         return prod
     go _prod (Lzma.DecompressStreamError err) =
-        fail $ "Pipes.Lzma.decompress: Error "++show err
+        throwM err
 
 -- | Compress a 'ByteString'.
 compress :: forall m r. MonadIO m
