Re-submit #19112
Re-submit #19112

Although the PR says it was merged, it wasn't and the reactor is currently broken because of the partial merge of the previous refactor

saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt