make storageMode support promise