repackage and privatize async callback promises