Make promise selection logic clearer