dont create new promises unless necessary