diff --git a/aeson-combinators.cabal b/aeson-combinators.cabal
--- a/aeson-combinators.cabal
+++ b/aeson-combinators.cabal
@@ -1,6 +1,6 @@
 cabal-version:       >=1.10
 name:                aeson-combinators
-version:             0.0.1.1
+version:             0.0.2.0
 synopsis:            Aeson combinators for dead simple JSON decoding
 description:
     This library defines low overhead value space `Decoder`
@@ -22,6 +22,7 @@
                    , GHC == 7.6.3
                    , GHC == 8.4.4
                    , GHC == 8.6.5
+                   , GHCJS == 8.6.0.1
 
 library
   exposed-modules:     Data.Aeson.Combinators.Decode
diff --git a/lib/Data/Aeson/Combinators/Decode.hs b/lib/Data/Aeson/Combinators/Decode.hs
--- a/lib/Data/Aeson/Combinators/Decode.hs
+++ b/lib/Data/Aeson/Combinators/Decode.hs
@@ -46,7 +46,10 @@
 -- * Decoding Time
   , zonedTime, localTime, timeOfDay
   , utcTime
-  , day, dayOfWeek
+  , day
+#if (MIN_VERSION_time_compat(1,9,2))
+  , dayOfWeek
+#endif
 -- * Decodeing Containers
 -- *** Maybe
   , nullable
@@ -84,6 +87,7 @@
 import           Control.Monad              hiding (void)
 import           Control.Monad.Fail         (MonadFail (..))
 import qualified Control.Monad.Fail         as Fail
+import           Data.Aeson.Internal        (JSONPath, JSONPathElement (..))
 import qualified Data.Aeson.Internal        as AI
 import qualified Data.Aeson.Parser          as Parser
 import qualified Data.Aeson.Parser.Internal as ParserI
@@ -93,7 +97,9 @@
 import           Data.Int                   (Int16, Int32, Int64, Int8)
 import           Data.Text                  (Text)
 import           Data.Time.Calendar         (Day)
+#if (MIN_VERSION_time_compat(1,9,2))
 import           Data.Time.Calendar.Compat  (DayOfWeek)
+#endif
 import           Data.Time.Clock            (UTCTime)
 import           Data.Time.LocalTime        (LocalTime, TimeOfDay, ZonedTime)
 import           Data.UUID.Types            (UUID)
@@ -447,11 +453,15 @@
 day = auto
 {-# INLINE day #-}
 
+#if (MIN_VERSION_time_compat(1,9,2))
 -- | Decode JSON string to 'Data.Time.Calendar.Compat.DayOfWeek'
 -- using Aesons's instance implementation
+--
+-- This function requires 'time-compat' >= 1.9.2
 dayOfWeek :: Decoder DayOfWeek
 dayOfWeek = auto
 {-# INLINE dayOfWeek #-}
+#endif
 
 
 -- Continer Decoders
@@ -736,13 +746,29 @@
 
 -- Private functions Aeson doesn't expose
 
--- | Annotate an error message with a
--- <http://goessner.net/articles/JsonPath/ JSONPath> error location.
-formatError :: JSONPath -> String -> String
-formatError pth msg =
-  "Error in " ++ formatPath pth ++ ": " ++ msg
-{-# INLINE formatError #-}
-
 eitherFormatError :: Either (JSONPath, String) a -> Either String a
-eitherFormatError = either (Left . uncurry formatError) Right
+eitherFormatError = either (Left . uncurry AI.formatError) Right
 {-# INLINE eitherFormatError #-}
+
+#if (MIN_VERSION_aeson(1,4,3))
+#else
+
+-- These functions are not exposed in aeson 1.4.2.0
+-- implementation is copied from
+-- https://hackage.haskell.org/package/aeson-1.4.6.0/docs/src/Data.Aeson.Types.FromJSON.html#unexpected
+
+unexpected :: Value -> Parser a
+unexpected actual = Fail.fail $ "unexpected " ++ typeOf actual
+{-# INLINE unexpected #-}
+
+typeOf :: Value -> String
+typeOf v = case v of
+    Object _ -> "Object"
+    Array _  -> "Array"
+    String _ -> "String"
+    Number _ -> "Number"
+    Bool _   -> "Boolean"
+    Null     -> "Null"
+{-# INLINE typeOf #-}
+
+#endif
