support Action.async