brillout / react-streaming

React Streaming. Full-fledged & Easy.
MIT License
216 stars 14 forks source link

fix: disable write after stream destoryed #21

Closed JiangWeixian closed 1 year ago

JiangWeixian commented 1 year ago

Closed: #20

JiangWeixian commented 1 year ago

@brillout cc

brillout commented 1 year ago

Shouldn't we destroy writableForReact?

brillout commented 1 year ago

What happens if writableForReact is already destroyed? Will it throw?

brillout commented 1 year ago

(If that's even possible?)

JiangWeixian commented 1 year ago

I test write writableForReact.destroy() inside

destroy(err) {
  debug(`destroy (\`!!err === ${!!err}\`)`)
  // Upon React internal errors (i.e. React bugs), React destroys the stream.
  if (err) onReactBug(err)
  writableFromUser.destroy(err ?? undefined)
+  writableForReact.destroy()
  onEnded()
}

No error will be throwed.

brillout commented 1 year ago

Wonderful.

brillout commented 1 year ago

Fix released in 0.3.11. FYI cb0d1ee346566eb1814821a81267f71b93997a5c.

brillout commented 1 year ago

Btw. I'm curious: what are you using react-streaming for?

JiangWeixian commented 1 year ago

I maintain a private framework package. There is API request cost lots time in client-side. I move this request into server-side to improve LCP metric.

brillout commented 1 year ago

Sounds neat, btw. https://github.com/sponsors/brillout.

brillout commented 1 year ago

Thanks 💚. Next step being to convince your employer :-).