we should document the return value is now a promise