Именно тут await ждет когда отработает колбек, а не запрос. Если dispatch не промис, то await перед ним тоже не нужен. Так-же блок try/catch никак не отреагирует на исключения в промисе или колбеке. Грубо говоря код делает вовсе не то, что тебе от него хочется.
Если надо отлавливать исключения, то это делать надо там, где они вылетают. А это запрос и его обработка. Добавление слушателя исключение скорей всего не выбросит, если там не грубый баг. А исключение при вызове колбека так не отловить, так как вызовется он когда-то потом, когда этот код уже отработает.
socket.on("exit", async () => {
try {
const response = await axios.post(
process.env.REACT_APP_API_URL + "api/games/remove",
{
game: MATCH_ID,
team,
},
);
await dispatch({
type: UPDATE_GAME,
game: response.data.game,
team_a: response.data.team_a,
team_b: response.data.team_b,
});
await dispatch({
type: ACCEPT,
accepts: false,
});
} catch (err) {
console.error(err);
}
});