return promise to ensure protection