diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,8 @@
+## 1.0.8
+
+* Replace EitherT with ExceptT
+* Increased the upper-bound of `base` to < 4.11.
+
 ## 1.0.7
 
 * Update dependencies
diff --git a/engine-io-wai.cabal b/engine-io-wai.cabal
--- a/engine-io-wai.cabal
+++ b/engine-io-wai.cabal
@@ -1,5 +1,5 @@
 name: engine-io-wai
-version: 1.0.7
+version: 1.0.8
 synopsis: An @engine-io@ @ServerAPI@ that is compatible with @Wai@
 homepage: http://github.com/ocharles/engine.io
 license: BSD3
@@ -21,14 +21,14 @@
         Network.EngineIO.Wai
 
     build-depends:
-        base >=4.6 && <4.10,
+        base >=4.6 && <4.11,
         engine-io >= 1.2 && < 1.3,
         http-types >= 0.8 && < 0.10,
         unordered-containers >= 0.2 && < 0.3,
         wai >= 3.0 && < 3.3,
         text >= 1.1 && < 1.3,
         bytestring >= 0.9 && <0.11,
-        websockets >= 0.8 && < 0.11,
+        websockets >= 0.8 && < 0.13,
         wai-websockets >= 3 && < 3.1,
         mtl >= 2 && < 2.3,
         either >= 4,
diff --git a/src/Network/EngineIO/Wai.hs b/src/Network/EngineIO/Wai.hs
--- a/src/Network/EngineIO/Wai.hs
+++ b/src/Network/EngineIO/Wai.hs
@@ -1,6 +1,6 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleContexts           #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE OverloadedStrings          #-}
 
 
 module Network.EngineIO.Wai (
@@ -10,36 +10,36 @@
     ) where
 
 
-import Network.Wai
-import Control.Applicative (Applicative)
-import Control.Monad.Reader
-import Control.Monad.Error.Class
-import Control.Monad.Trans.Either
-import Control.Arrow (second)
-import Data.Maybe (maybeToList)
-import Data.ByteString.Lazy (toStrict)
-import Data.Attoparsec.ByteString (parseOnly)
-import Network.HTTP.Types.Header (hContentType)
+import           Control.Applicative            (Applicative)
+import           Control.Arrow                  (second)
+import           Control.Monad.Error.Class
+import           Control.Monad.Except
+import           Control.Monad.Reader
+import           Data.Attoparsec.ByteString     (parseOnly)
+import           Data.ByteString.Lazy           (toStrict)
+import           Data.Maybe                     (maybeToList)
+import           Network.HTTP.Types.Header      (hContentType)
+import           Network.Wai
 
 
-import Network.HTTP.Types.Status as ST
-import Network.HTTP.Types.URI as URI
-import qualified Data.ByteString as BS
-import qualified Network.EngineIO as EIO
-import qualified Data.HashMap.Strict as HashMap
-import qualified Network.Wai as WAI
+import qualified Data.ByteString                as BS
+import qualified Data.HashMap.Strict            as HashMap
+import qualified Network.EngineIO               as EIO
+import           Network.HTTP.Types.Status      as ST
+import           Network.HTTP.Types.URI         as URI
+import qualified Network.Wai                    as WAI
 import qualified Network.Wai.Handler.WebSockets as WaiWS
-import qualified Network.WebSockets as WS
+import qualified Network.WebSockets             as WS
 
 
 newtype WaiMonad a = WaiMonad {
-    runWaiMonad :: EitherT Response (ReaderT Request IO) a
+    runWaiMonad :: ExceptT Response (ReaderT Request IO) a
     } deriving (Monad, Functor, Applicative, MonadReader Request, MonadError Response, MonadIO)
 
 
 toWaiApplication :: WaiMonad a -> Application
 toWaiApplication sHandler req respond = do
-    socket <- runReaderT (runEitherT (runWaiMonad sHandler)) req
+    socket <- runReaderT (runExceptT (runWaiMonad sHandler)) req
     respond $ case socket of
         Left response -> response
         Right _ -> responseLBS status200 [("Content-Type", "text/html")] ""
