more consistent promise exception style