-- Should I pass through the ResponsException to the cOnResponse?
initializeContext :: AppKey -> SessionToken -> UTCTime -> Context
initializeContext a s t =
  Context
  { cConnection = undefined
  , cLogger = putStrLn
  , cOnResponse = \_ r c -> print r >> return (Nothing, c)
  , cOnConnection = return
  , cState = (defaultStreamingState t) {ssAppKey = a, ssSessionToken = s}
  }
initializeContext :: AppKey -> SessionToken -> UTCTime -> Context
initializeContext a s t =
  Context
  { cConnection = undefined
  , cLogger = putStrLn
  , cOnResponse = \_ r c -> print r >> return (Nothing, c)
  , cOnConnection = return
  , cState = (defaultStreamingState t) {ssAppKey = a, ssSessionToken = s}
  }
initializeContext a s t =
  Context
  { cConnection = undefined
  , cLogger = putStrLn
  , cOnResponse = \_ r c -> print r >> return (Nothing, c)
  , cOnConnection = return
  , cState = (defaultStreamingState t) {ssAppKey = a, ssSessionToken = s}
  }