Upload timeout 1.8.10 (solved)

Uploading to a Mega 2650. Nothing connected to the serial lines except via the USB to the laptop. Programmer set to ArduinoISP (also tried the AVR ISP and AVRISP mkII settings). I can receive serial messages in the serial monitor, from previous code loaded on the Mega. The laptop gives the standard "USB connected" beep when I plug into the Mega. I am counting on this being something totally stupid.

Here's the error log:

Arduino: 1.8.10 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

Sketch uses 22318 bytes (8%) of program storage space. Maximum is 253952 bytes.
Global variables use 1973 bytes (24%) of dynamic memory, leaving 6219 bytes for local variables. Maximum is 8192 bytes.
C:\Users\Roger\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9/bin/avrdude -CC:\Users\Roger\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9/etc/avrdude.conf -v -patmega2560 -cwiring -PCOM5 -b115200 -D -Uflash:w:C:\Users\Roger\AppData\Local\Temp\arduino_build_388538/drippers_4h.ino.hex:i

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "C:\Users\Roger\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9/etc/avrdude.conf"

Using Port : COM5
Using Programmer : wiring
Overriding Baud Rate : 115200
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

avrdude done. Thank you.

An error occurred while uploading the sketch

Turns out I had a heavy duty surge protection connected to the reset pin. The initial upload sequence did reset the Mega, but there are evidently other signals that the surge protection messed up. I knew it was something I was overlooking.