docs: private void writeExecute(final boolean allowRetry)
              throws DfuException, DeviceDisconnectedException, UploadAbortedException,
              UnknownResponseException, RemoteDfuException {
  		try {
  			writeExecute();
  		} catch (final RemoteDfuException e) {
  			if (allowRetry && e.getErrorNumber() == SecureDfuError.INVALID_OBJECT) {
  				logw(e.getMessage() + ": " + SecureDfuError.parse(DfuBaseService.ERROR_REMOTE_TYPE_SECURE | SecureDfuError.INVALID_OBJECT));
  				if (mFileType == DfuBaseService.TYPE_SOFT_DEVICE) {
  					logw("Are you sure your new SoftDevice is API compatible with the updated one? If not, update the bootloader as well");
  					// API compatible = both SoftDevices have the same Major version
  				}
  				mService.sendLogBroadcast(DfuBaseService.LOG_LEVEL_WARNING, String.format(Locale.US, "Remote DFU error: %s. SD busy? Retrying...",
  						SecureDfuError.parse(DfuBaseService.ERROR_REMOTE_TYPE_SECURE | SecureDfuError.INVALID_OBJECT)));
  				logi("SD busy? Retrying...");
  				logi("Executing data object (Op Code = 4)");
  				writeExecute();
  			} else {
  				throw e;
  			}
  		}
  	}