use executor to handle read timeouts