make --async a generic command pattern