braid-http 1.3.29 → 1.3.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -265,6 +265,7 @@ async function braid_fetch (url, params = {}) {
265
265
  var retry = params.retry && // only try to reconnect if the user has chosen to
266
266
  e.name !== "AbortError" && // don't retry if the user has chosen to abort
267
267
  !e.startsWith?.('Parse error in headers') && // in this case, the server is spewing garbage, so reconnecting might be bad
268
+ !e.message?.startsWith?.('Could not establish multiplexed stream') && // the server has told us no, or is using a different version of multiplexing
268
269
  !cb_running // if an error is thrown in the callback, then it may not be good to reconnect, and generate more errors
269
270
 
270
271
  if (retry && !original_signal?.aborted) {
@@ -885,14 +886,12 @@ async function multiplex_fetch(url, params) {
885
886
 
886
887
  // return a "fetch" for this multiplexer
887
888
  return async (url, params) => {
888
- // maybe wait for multiplexer to be connected..
889
- if (!params.experimental_do_not_wait_for_multiplexer) {
890
- if ((await mux_promise) === false) {
891
- // it failed to connect the multiplexer,
892
- // so fallback to normal fetch
893
- return await normal_fetch(url, params)
894
- }
895
- }
889
+
890
+ // if we already know the multiplexer is not working,
891
+ // then fallback to normal fetch
892
+ // (unless the user is specifically asking for multiplexing)
893
+ if ((await promise_done(mux_promise)) && (await mux_promise) === false && !params.headers.get('multiplexer'))
894
+ return await normal_fetch(url, params)
896
895
 
897
896
  // make up a new stream id (unless it is being overriden)
898
897
  var stream = params.headers.get('multiplexer')?.split('/')[2] ?? Math.random().toString(36).slice(2)
@@ -958,10 +957,8 @@ async function multiplex_fetch(url, params) {
958
957
  try {
959
958
  var res = await normal_fetch(url, params)
960
959
 
961
- if (params.experimental_do_not_wait_for_multiplexer &&
962
- res.status === 422 &&
963
- !(await promise_done(mux_promise))) {
964
- // this error will trigger a retry if the user is using that
960
+ if (res.status === 422 && !(await promise_done(mux_promise))) {
961
+ // this error will trigger a retry if the user is using that option
965
962
  throw new Error('multiplexer not yet connected')
966
963
  }
967
964
 
@@ -267,6 +267,7 @@ function braidify (req, res, next) {
267
267
  // so people can send multiplexed data to it
268
268
  res.writeHead(200, {
269
269
  'Multiplex-Version': '0.0.1',
270
+ 'Incremental': '?1',
270
271
  'Cache-Control': 'no-cache',
271
272
  'X-Accel-Buffering': 'no',
272
273
  ...req.httpVersion !== '2.0' && {'Connection': 'keep-alive'}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "braid-http",
3
- "version": "1.3.29",
3
+ "version": "1.3.31",
4
4
  "description": "An implementation of Braid-HTTP for Node.js and Browsers",
5
5
  "scripts": {
6
6
  "test": "node test/server.js"