ESP8266 nodes often looses connection or stalls while doing OTA updates

I recently worked with some ESP8266 Nodes (D1 mini and Wemos) and often found them stuck on install of updated configuration, mostly at about 5% of the upload phase. RSSI of the unit was pretty good as it is nearby the Wifi AP.
After that the node needs to get updated using USB, which is pretty annoying.
How to stabilize this process? What could go wrong?

It also seems to loose the connection very often, even if the Wifi signal strength is good:

INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from esphome-web-da8c49.local using esphome API
INFO Successfully connected to esphome-web-da8c49.local
[22:56:19][I][app:102]: ESPHome version 2022.9.4 compiled on Oct 12 2022, 22:55:20
[22:56:19][C][wifi:502]: WiFi:
...
[22:56:19][C][wifi:367]:   Signal strength: -36 dB ▂▄▆█
...
[22:56:19][C][mdns:100]: mDNS:
[22:56:19][C][mdns:101]:   Hostname: esphome-web-da8c49
[22:56:19][C][ota:089]: Over-The-Air Updates:
[22:56:19][C][ota:090]:   Address: esphome-web-da8c49.local:8266
[22:56:19][C][api:138]: API Server:
[22:56:19][C][api:139]:   Address: esphome-web-da8c49.local:6053
[22:56:19][C][api:143]:   Using noise encryption: NO
[22:56:34][D][api:102]: Accepted 192.168.178.67
[22:56:34][D][api.connection:917]: Home Assistant 2022.10.3 (192.168.178.67): Connected successfully
[22:56:47][D][sensor:126]: 'Total': Sending state 0.01300 kWh with 3 decimals of accuracy
[22:56:48][D][sensor:126]: 'Stromverbrauch': Sending state 38.67849 kW with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Total': Sending state 0.02600 kWh with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Stromverbrauch': Sending state 189.72331 kW with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Total': Sending state 0.03900 kWh with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Stromverbrauch': Sending state 49.84424 kW with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Total': Sending state 0.05200 kWh with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Stromverbrauch': Sending state 140.76247 kW with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Total': Sending state 0.06500 kWh with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Stromverbrauch': Sending state 83.04498 kW with 3 decimals of accuracy
[22:56:52][D][sensor:126]: 'Total': Sending state 0.07800 kWh with 3 decimals of accuracy
INFO esphome-web-da8c49.local: Ping timed out!
INFO Disconnected from ESPHome API for esphome-web-da8c49.local
WARNING Disconnected from API
INFO Successfully connected to esphome-web-da8c49.local
INFO esphome-web-da8c49.local: Ping timed out!
INFO Disconnected from ESPHome API for esphome-web-da8c49.local
WARNING Disconnected from API
INFO Successfully connected to esphome-web-da8c49.local
[22:58:23][D][sensor:126]: 'Stromverbrauch': Sending state 0.51627 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.09100 kWh with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Stromverbrauch': Sending state 132.96399 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.10400 kWh with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Stromverbrauch': Sending state 129.03227 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.11700 kWh with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Stromverbrauch': Sending state 135.59323 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.13000 kWh with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Stromverbrauch': Sending state 56.87204 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.14300 kWh with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Stromverbrauch': Sending state 150.94341 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.15600 kWh with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Stromverbrauch': Sending state 56.67060 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.16900 kWh with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Stromverbrauch': Sending state 87.11434 kW with 3 decimals of accuracy
[22:58:28][D][sensor:126]: 'Total': Sending state 0.18200 kWh with 3 decimals of accuracy
INFO esphome-web-da8c49.local: Ping timed out!
INFO Disconnected from ESPHome API for esphome-web-da8c49.local
WARNING Disconnected from API
INFO Successfully connected to esphome-web-da8c49.local
INFO esphome-web-da8c49.local: Ping timed out!
INFO Disconnected from ESPHome API for esphome-web-da8c49.local
WARNING Disconnected from API
INFO Successfully connected to esphome-web-da8c49.local
INFO esphome-web-da8c49.local: Ping timed out!
INFO Disconnected from ESPHome API for esphome-web-da8c49.local
WARNING Disconnected from API
INFO Successfully connected to esphome-web-da8c49.local
[23:00:00][D][sensor:126]: 'Stromverbrauch': Sending state 0.51255 kW with 3 decimals of accuracy
[23:00:00][D][sensor:126]: 'Total': Sending state 0.19500 kWh with 3 decimals of accuracy
[23:00:01][D][sensor:126]: 'Stromverbrauch': Sending state 82.19178 kW with 3 decimals of accuracy
[23:00:02][D][sensor:126]: 'Total': Sending state 0.20800 kWh with 3 decimals of accuracy
[23:00:02][D][sensor:126]: 'Stromverbrauch': Sending state 100.41841 kW with 3 decimals of accuracy
[23:00:02][D][sensor:126]: 'Total': Sending state 0.22100 kWh with 3 decimals of accuracy
[23:00:02][D][sensor:126]: 'Stromverbrauch': Sending state 77.17042 kW with 3 decimals of accuracy
INFO esphome-web-da8c49.local: Ping timed out!
INFO Disconnected from ESPHome API for esphome-web-da8c49.local
WARNING Disconnected from API
INFO Successfully connected to esphome-web-da8c49.local
[23:01:07][I][ota:109]: Boot seems successful, resetting boot loop counter.