Stellar SDK doesn't fully support HTTP2
See original GitHub issueStellar SDK throws an error which is an instance of Error
for 404 responses with HTTP2.
Version: stellar-sdk 7.0.0
To Reproduce
Try to load an account, which does not exist.
Expected behavior
Stellar SDK should throw NotFoundError
for HTTP2 404 responses.
Additional context
Status-line
in HTTP 1.1 consists of HTTP-Version Status-Code Reason-Phrase
(rfc2616 spec here)
BUT in HTTP2 Reason-Phrase
is deprecated (rfc7540 spec here):
HTTP/2 does not define a way to carry the version or reason phrase that is included in an HTTP/1.1 status line.
JS Stellar-SDK needs status text (reason phrase) to return a correct error object. It creates an error of the NotFoundError
class only if the status text is present. See the code:
https://github.com/stellar/js-stellar-sdk/blob/84d10c604e4f0217c608d4019ca3e80e35584eb5/src/call_builder.ts#L382
We later check if an error is an instance of NotFoundError
. Here is an example of this check in the docs: https://developers.stellar.org/docs/tutorials/send-and-receive-payments/#send-a-payment
if (error instanceof StellarSdk.NotFoundError) { ... }
There is no status text in the HTTP2 response, and we cannot properly determine what kind of error occurred (parsing an error message is not a good idea).
Issue Analytics
- State:
- Created 3 years ago
- Reactions:2
- Comments:7 (2 by maintainers)
Top GitHub Comments
Unfortunately, the HTTP client we use under the hood doesn’t support HTTP2 yet (see axios/axios#1175). However, there may be a higher-level workaround for this. I’ll be looking closer at error-handling in a broader sense in the coming weeks so this may get lumped into it.
@Shaptic any news?