microsoft / microsoft/vscode-debugadapter-node
ProtocolClient.send breaks async stacktraces
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 306
- Forks
- 90
- Ø Merge
- 8 Std. 36 Min.
- Gemergte PRs (30 T.)
- 3
Beschreibung
The following implementation:
https://github.com/microsoft/vscode-debugadapter-node/blob/1621133e71527d9d46438edb766eaf8e731b68f5/testSupport/src/protocolClient.ts#L69-L80
is not async itself and returns the promise immediately without awaiting it. Consequently, if the promise gets rejected with an error, the stack trace in the error does not include either send or its caller. This unnecessarily complicates debugging of e.g. async unit tests that await send() and receive an unexpected error response.
Instead, the callback for doSend should capture the raw response in a wrapper promise, and then send should await that promise and translate it to a throw.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in testSupport/src/protocolClient.ts bei der verlinkten Implementierung von ProtocolClient.send und untersuche, wie sie doSend aufruft. Verfolge den Pfad des abgelehnten Promise und überprüfe, dass send auf einen Wrapper um die rohe Antwort wartet, bevor der Fehler übersetzt wird. Erledigt ist die Aufgabe, wenn asynchrone Stacktraces der Ablehnung send und seinen Aufrufer enthalten.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- api
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 45/100