diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2015 Simon Hengel <sol@typeful.net>
+Copyright (c) 2011-2017 Simon Hengel <sol@typeful.net>
 Copyright (c) 2011-2012 Trystan Spangler <trystan.s@comcast.net>
 Copyright (c) 2011-2011 Greg Weber <greg@gregweber.info>
 
diff --git a/hspec-contrib.cabal b/hspec-contrib.cabal
--- a/hspec-contrib.cabal
+++ b/hspec-contrib.cabal
@@ -1,8 +1,8 @@
 name:             hspec-contrib
-version:          0.3.0
+version:          0.4.0
 license:          MIT
 license-file:     LICENSE
-copyright:        (c) 2011-2015 Simon Hengel,
+copyright:        (c) 2011-2017 Simon Hengel,
                   (c) 2014 Junji Hashimoto
 
 maintainer:       Simon Hengel <sol@typeful.net>
diff --git a/src/Test/Hspec/Contrib/Retry.hs b/src/Test/Hspec/Contrib/Retry.hs
--- a/src/Test/Hspec/Contrib/Retry.hs
+++ b/src/Test/Hspec/Contrib/Retry.hs
@@ -9,12 +9,18 @@
 
 instance Example a => Example (Retry a) where
   type Arg (Retry a) = Arg a
-  evaluateExample (Retry n example) a b c = do
-    v <- evaluateExample example a b c
-    case v of
-      Success -> return v
-      _ | n > 1 -> evaluateExample (Retry (pred n) example) a b c
-      _ -> return v
+  evaluateExample (Retry n example) a b c
+    | n > 1 = do
+        r <- safeEvaluateExample example a b c
+        case r of
+          Right result -> case result of
+            Success{} -> return result
+            Pending{} -> return result
+            Failure{} -> retry
+          Left _ -> retry
+    | otherwise = evaluateExample example a b c
+    where
+      retry = evaluateExample (Retry (pred n) example) a b c
 
 -- | Retry evaluating example that may be failed until success.
 retryWith :: Int
diff --git a/test/Test/Hspec/Contrib/RetrySpec.hs b/test/Test/Hspec/Contrib/RetrySpec.hs
--- a/test/Test/Hspec/Contrib/RetrySpec.hs
+++ b/test/Test/Hspec/Contrib/RetrySpec.hs
@@ -9,7 +9,7 @@
 
 spec :: Spec
 spec = do
-  describe "retry test" $ do
+  describe "retryWith" $ do
     ref <- runIO $ newIORef (0::Int)
     it "retry 11 times, then check the value" $ do
       let incr :: IO Int
