correct some suspicious code and add param check for async options