left-or-right promise function