[Fix] promises could be changed after reject/resolve