diff --git a/scripts/support/runner/arc.py b/scripts/support/runner/arc.py
index 99b2311..c3647c9 100644
--- a/scripts/support/runner/arc.py
+++ b/scripts/support/runner/arc.py
@@ -96,7 +96,7 @@
                                tcl_port=tcl_port, telnet_port=telnet_port,
                                gdb_port=gdb_port, debug=debug)
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command not in {'flash', 'debug', 'debugserver'}:
             raise ValueError('{} is not supported'.format(command))
 
diff --git a/scripts/support/runner/bossac.py b/scripts/support/runner/bossac.py
index 394a9c3..cbf24b4 100644
--- a/scripts/support/runner/bossac.py
+++ b/scripts/support/runner/bossac.py
@@ -46,7 +46,7 @@
         return BossacBinaryRunner(bin_name, bossac=bossac, port=port,
                                   debug=debug)
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command != 'flash':
             raise ValueError('only flash is supported')
 
diff --git a/scripts/support/runner/core.py b/scripts/support/runner/core.py
index 2f38186..b66b535 100644
--- a/scripts/support/runner/core.py
+++ b/scripts/support/runner/core.py
@@ -225,9 +225,15 @@
         environment variables expected by that script are used to build
         the flasher in a backwards-compatible manner.'''
 
-    @abc.abstractmethod
     def run(self, command, **kwargs):
-        '''Run a command ('flash', 'debug', 'debugserver').
+        '''Runs command ('flash', 'debug', 'debugserver').
+
+        This is the main entry point to this runner.'''
+        self.do_run(command, **kwargs)
+
+    @abc.abstractmethod
+    def do_run(self, command, **kwargs):
+        '''Concrete runner; run() delegates to this. Implement in subclasses.
 
         In case of an unsupported command, raise a ValueError.'''
 
diff --git a/scripts/support/runner/dfu.py b/scripts/support/runner/dfu.py
index 5dda9d8..95353b9 100644
--- a/scripts/support/runner/dfu.py
+++ b/scripts/support/runner/dfu.py
@@ -58,7 +58,7 @@
         output = output.decode(sys.getdefaultencoding())
         return self.list_pattern in output
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command != 'flash':
             raise ValueError('only flash is supported')
 
diff --git a/scripts/support/runner/esp32.py b/scripts/support/runner/esp32.py
index 0dcacae..38f6fbe 100644
--- a/scripts/support/runner/esp32.py
+++ b/scripts/support/runner/esp32.py
@@ -67,7 +67,7 @@
                                  flash_mode=flash_mode, espidf=espidf,
                                  debug=debug)
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command != 'flash':
             raise ValueError('only flash is supported')
 
diff --git a/scripts/support/runner/jlink.py b/scripts/support/runner/jlink.py
index f20fbe6..3822173 100644
--- a/scripts/support/runner/jlink.py
+++ b/scripts/support/runner/jlink.py
@@ -79,7 +79,7 @@
     def print_gdbserver_message(self):
         print('JLink GDB server running on port {}'.format(self.gdb_port))
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command not in {'debug', 'debugserver'}:
             raise ValueError('{} is not supported'.format(command))
 
diff --git a/scripts/support/runner/nios2.py b/scripts/support/runner/nios2.py
index 480e1ed..a18d2e3 100644
--- a/scripts/support/runner/nios2.py
+++ b/scripts/support/runner/nios2.py
@@ -76,7 +76,7 @@
                                  cpu_sof=cpu_sof, zephyr_base=zephyr_base,
                                  gdb=gdb, tui=tui, debug=debug)
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command not in {'flash', 'debug', 'debugserver'}:
             raise ValueError('{} is not supported'.format(command))
 
diff --git a/scripts/support/runner/nrfjprog.py b/scripts/support/runner/nrfjprog.py
index f11ab8f..0ebed7b 100644
--- a/scripts/support/runner/nrfjprog.py
+++ b/scripts/support/runner/nrfjprog.py
@@ -60,7 +60,7 @@
 
         return snrs[value - 1]
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command != 'flash':
             raise ValueError('only flash is supported')
 
diff --git a/scripts/support/runner/openocd.py b/scripts/support/runner/openocd.py
index c171449..23b727e 100644
--- a/scripts/support/runner/openocd.py
+++ b/scripts/support/runner/openocd.py
@@ -134,7 +134,7 @@
                                    telnet_port=telnet_port, gdb_port=gdb_port,
                                    gdb=gdb, tui=tui, debug=debug)
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command not in {'flash', 'debug', 'debugserver'}:
             raise ValueError('{} is not supported'.format(command))
 
diff --git a/scripts/support/runner/pyocd.py b/scripts/support/runner/pyocd.py
index 384b8c1..d5e7831 100644
--- a/scripts/support/runner/pyocd.py
+++ b/scripts/support/runner/pyocd.py
@@ -107,7 +107,7 @@
                                  tui=tui, bin_name=bin_name, elf_name=elf_name,
                                  board_id=board_id, daparg=daparg, debug=debug)
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command not in {'flash', 'debug', 'debugserver'}:
             raise ValueError('{} is not supported'.format(command))
 
diff --git a/scripts/support/runner/qemu.py b/scripts/support/runner/qemu.py
index 07de6f2..4852268 100644
--- a/scripts/support/runner/qemu.py
+++ b/scripts/support/runner/qemu.py
@@ -20,6 +20,6 @@
         '''Create runner. No environment dependencies.'''
         return QemuBinaryRunner()
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command == 'debugserver':
             print('Detached GDB server')
diff --git a/scripts/support/runner/xtensa.py b/scripts/support/runner/xtensa.py
index c86d2a2..35d3057 100644
--- a/scripts/support/runner/xtensa.py
+++ b/scripts/support/runner/xtensa.py
@@ -35,7 +35,7 @@
 
         return XtensaBinaryRunner(xt_gdb, elf_name)
 
-    def run(self, command, **kwargs):
+    def do_run(self, command, **kwargs):
         if command != 'debug':
             raise ValueError('Only debug is supported')
 
