The function `reqHistoricalData` has an argument `useRTH` ("use regular trading hours"). Set `useRTH = "0"` to get data outside those hours.

This can only work for the futures, not for the index, which is only computed during normal trading hours.

    library("IBrokers")
    tws <- twsConnect()
    
    contract <- twsContract(local = "ESH9",
                            sectype = "FUT",
                            exch = "GLOBEX",
                            currency = "USD",
                            include_expired = "1",
                            conId = "", symbol = "", primary = "", 
                            expiry = "", strike = "", right = "",
                            multiplier = "", combo_legs_desc = "",
                            comboleg = "", secIdType = "", secId = "")
    
    reqHistoricalData(tws,
                      contract,
                      barSize = "15 mins",
                      duration = "1 M",
                      useRTH = "0")