Page MenuHomePhabricator

[keyserver] Ignore promise rejections from websocket message handler
ClosedPublic

Authored by ashoat on Dec 4 2023, 1:21 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Apr 19, 4:55 PM
Unknown Object (File)
Sat, Apr 19, 2:43 PM
Unknown Object (File)
Sat, Apr 19, 4:48 AM
Unknown Object (File)
Sat, Apr 19, 1:57 AM
Unknown Object (File)
Fri, Apr 18, 9:52 AM
Unknown Object (File)
Tue, Apr 15, 8:45 PM
Unknown Object (File)
Wed, Apr 9, 12:31 AM
Unknown Object (File)
Mon, Mar 31, 7:06 AM
Subscribers

Details

Summary

The unused-promise Lint identified an issue here. onMessage can reject, in which case it doesn't appear to be handled.

To make sure it wasn't handled, I investigated how the redis library handles it. Internally that library extends Node's built-in EventEmitter, and that library explains how it handles things here. Since captureRejections: true is not set by the redis library, that means promise rejections will crash keyserver.

To avoid that, in this diff I wrap the call with ignorePromiseRejections. The conditional is necessary because onMessageCallback returns void | Promise<void>.

Depends on D10182

Test Plan

Flow

Diff Detail

Repository
rCOMM Comm
Lint
No Lint Coverage
Unit
No Test Coverage