fix a bug: should require async