Всё срабатывает. "Не срабатывает" и "срабатывает не так, как я задумал" - это не одно и то же. Промис должен резолвиться по таймауту, а не сразу; на каждый таймаут должен быть свой промис.
А чтобы выполнить какие-то действия после всех таймаутов, засуньте промисы в Promise.all:
Promise.all(rcs.map((residential, i) => {
return new Promise(resolve => {
setTimeout(() => {
...
resolve();
}, i * 50);
});
}).then(() => {
...
});
Или сделайте метод асинхронным, и используйте await:
async setMarkers(rcs) {
for (const residential of rcs) {
await new Promise(resolve => setTimeout(resolve, 50));
...
}
...
}