Я предполагаю, что (для этого конкретного варианта использования) вы редко интересуетесь просмотром вывода, помещенного в буфер "async", и что вы просто хотите предотвратить создание посторонних буферов. Если это так, вы можете сделать:
(save-window-excursion
(when (get-buffer "async")
(kill-buffer "async"))
(async-shell-command
cmd
(generate-new-buffer "async")))
Это уничтожит буфер "async" перед запуском "async-shell-command" и, таким образом, предотвратит создание дополнительных буферов "async".