fixed 3-legged promise