diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+4.3.3
+-----
+* Added `eitherToError`.
+
 4.3.2.1
 -------
 * Support `monad-control` 1.0
diff --git a/either.cabal b/either.cabal
--- a/either.cabal
+++ b/either.cabal
@@ -1,6 +1,6 @@
 name:          either
 category:      Control, Monads
-version:       4.3.2.1
+version:       4.3.3
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
diff --git a/src/Data/Either/Combinators.hs b/src/Data/Either/Combinators.hs
--- a/src/Data/Either/Combinators.hs
+++ b/src/Data/Either/Combinators.hs
@@ -32,9 +32,11 @@
   , unlessRight
   , leftToMaybe
   , rightToMaybe
+  , eitherToError
   ) where
 
 import Control.Applicative
+import Control.Monad.Error.Class ( MonadError(throwError) )
 
 -- ---------------------------------------------------------------------------
 -- Functions over Either
@@ -302,3 +304,7 @@
 -- Just 12
 rightToMaybe :: Either a b -> Maybe b
 rightToMaybe = either (const Nothing) Just
+
+-- | Generalize 'Either e' as 'MonadError e m'.
+eitherToError :: (MonadError e m) => Either e a -> m a
+eitherToError = either throwError return
