Description
Hey there!
I noticed in the code base a bit of an anti-pattern: unresolved or unhandled promises. Unhandled promises, also known as "fire-and-forget" programming patterns, can be problematic for a few reasons.
- Silent failures: When a promise is not handled (i.e., not await-ed or catch-ed), any error it throws won't be caught. This means that your code could be failing silently without you knowing about it.
- Unhandled promises can trigger
UnhandledPromiseRejectionWarning
in nodejs and even crash the process in newer versions. - Unpredictable program flow: Without await-ing a promise, the execution of code could continue before the promise is resolved or rejected. This can lead to race conditions and other timing-related bugs, because it makes the order of execution unpredictable. [For our use case this also relates to the
persistSession
as noted below, Extending state recovery into full message replay socket.io#4697] - ...
In this adapter it seems mostly to originate from the publish
method, which inserts a record in the mongo collection. But almost none of the calls to publish
are actually awaited.
More upstream, also other methods such as persistSession
, onEvent
, broadcastWithAck
... are not exposing the return value as promise. This might be caused as they have to implement a certain interface. But I think it would greatly improve the (semantic) readability and stability of the code base.
I understand that updating this in the entire codebase is a significant task, and that's why I'm asking: Would you accept a pull request that aims to resolve these issues? I'd be happy to contribute to improving this aspect of the codebase. We could start by just updating this connector.