diff --git a/hspec-expectations-lifted.cabal b/hspec-expectations-lifted.cabal
--- a/hspec-expectations-lifted.cabal
+++ b/hspec-expectations-lifted.cabal
@@ -1,5 +1,5 @@
 name:             hspec-expectations-lifted
-version:          0.8.2
+version:          0.9.0
 synopsis:         A version of hspec-expectations generalized to MonadIO
 description:      A version of hspec-expectations generalized to MonadIO
 license:          MIT
diff --git a/src/Test/Hspec/Expectations/Lifted.hs b/src/Test/Hspec/Expectations/Lifted.hs
--- a/src/Test/Hspec/Expectations/Lifted.hs
+++ b/src/Test/Hspec/Expectations/Lifted.hs
@@ -72,8 +72,8 @@
 -- |
 -- @action \`shouldReturn\` expected@ sets the expectation that @action@
 -- returns @expected@.
-shouldReturn :: (HasCallStack, MonadIO m, Show a, Eq a) => IO a -> a -> m ()
-shouldReturn = liftIO2 E.shouldReturn
+shouldReturn :: (HasCallStack, MonadIO m, Show a, Eq a) => m a -> a -> m ()
+shouldReturn action expected = action >>= liftIO . (`E.shouldBe` expected)
 
 -- |
 -- @actual \`shouldNotBe\` notExpected@ sets the expectation that @actual@ is not
