-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Labels
needs feedbackLooking for justification via real world use casesLooking for justification via real world use cases
Description
promises in convex mutations usually run to completion, even if not awaited.
for example,
handler: async (ctx, { id }) => {
ctx.db.patch(id, { foo: bar });
}
will execute the patch, even though patch
is async and we're not awaiting it. But this isn't true in Ents, because Ents use lazy promises. So a forgotten await can turn into a silent bug. i.e. this code, which looks identical to the above, actually is a no-op:
handler: async (ctx, { id }) => {
ctx.table("messages").getX(id).patch({ foo: bar });
}
If we could make mutating promises like patch
and insert
non-lazy, that would help avoid potential bugs.
in the meantime, enabling the linter @typescript-eslint/no-floating-promises
https://typescript-eslint.io/rules/no-floating-promises/ makes forgotten-await bug more likely to be found.
Metadata
Metadata
Assignees
Labels
needs feedbackLooking for justification via real world use casesLooking for justification via real world use cases