diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for error
 
+## 0.2.1.1 -- 2021-11-14
+
+* Make compatible with GHC 8.0.2 again by not using `<&>`.
+
 ## 0.2.1.0 -- 2021-11-13
 
 * Add `expectErrorIO` and `unwrapErrorIO`.
diff --git a/error.cabal b/error.cabal
--- a/error.cabal
+++ b/error.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               error
-version:            0.2.1.0
+version:            0.2.1.1
 
 synopsis: The canonical error type
 
diff --git a/src/Data/Error.hs b/src/Data/Error.hs
--- a/src/Data/Error.hs
+++ b/src/Data/Error.hs
@@ -50,7 +50,6 @@
 import GHC.Stack (HasCallStack)
 import Control.Exception (Exception (displayException))
 import qualified Control.Exception as Exc
-import Data.Functor ((<&>))
 import Data.Bifunctor (first)
 
 -- | The canonical @Error@ type.
@@ -271,4 +270,4 @@
 -- Bear in mind that pure exceptions are only raised when the resulting code is forced
 -- (thus the @putStrLn $ show@ in the above example).
 ifError :: forall exc a. (Exception exc) => Text -> IO a -> IO (Either Error a)
-ifError context io = Exc.try @exc io <&> first (addContext context . exceptionToError)
+ifError context io = first (addContext context . exceptionToError) <$> Exc.try @exc io
