Народная сказка: совместите Результат и Задание (или просто пообещайте)
Это кусок сломанного кода:
async function foo() {
return maybeMonad
.map((resultMonad) => resultMonad
.matchWith({
Error: (errorMonad) => errorMonad,
Ok: (okMonad) => okMonad
.map(async (context) => {
let res = await apiRequest(context.token);
context.data = res.data;
return context;
}),
}));
}
await foo() // => Maybe(Promise)
Идея состоит в том, чтобы получить некоторое значение из контекста, сделать запрос и вернуть контекст с дополненными данными. Но он возвращает обещание в состоянии ожидания. Что я делаю неправильно?