Try holding down the GPIO 0 button before hitting “Upload” and keep it held down until esptool.py starts to run. You may need to turn on “Verbose Output” to see that in the printout from the IDE. To do that, go to your “Preferences” menu and click the boxes next to “Show verbose output during” for both Compilation and Upload.
If that does not fix the issue, let us know and we can troubleshoot further.
This error occurs when you keep the serial monitor open while uploading. The serial monitor will “read” the response the esptool.py is expecting from the ESP32. Make sure to close the monitor before starting compile/upload.
Can you please provide a bit more information about which board you are uploading to (we carry a couple of ESP32 Things now so it might be an issue of the wrong board) and what selections you have made in the boards tool? If possible, can you take a screenshot of your settings in that menu? Also, which version of Arduino and the ESP32 Arduino Core are you running and what operating system are you using?