Open doasync opened 3 years ago
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.
any news?
Any news?
Hey @Fomin2402, thanks for following up. Unfortunately, this has gotten de-prioritized for some time in lieu of other projects (AMMs, muxed accounts, scaling, etc. to name a few). Is the lack of HTTP/2 support a major blocker for you?
@Shaptic
Hi, I think it's pretty important, cause there are many servers which is under HTTP/2 protocol.
For example: some proxies which is under HTTP/2 protocol will break your error handling logic (cause it based on statusText
field, which is absent on HTTP/2)
@Shaptic any news?
@Shaptic any news?
Have you experimented with the HTTP/2 adapter? I haven't tried it yet myself, but it should be possible to override the default adapter like so:
import { Horizon } from '@stellar/stellar-sdk';
import { createHTTP2Adapter } from 'axios-http2-adapter';
Horizon.AxiosClient.defaults.adapter = createHTTP2Adapter();
Since we are removing axios dependency, could we unblock this ticket?
Stellar 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 ofHTTP-Version Status-Code Reason-Phrase
(rfc2616 spec here)BUT in HTTP2
Reason-Phrase
is deprecated (rfc7540 spec here):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#L382We 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-paymentThere 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).