Skip to content

Node errors are very slow to create #40

@ronag

Description

@ronag

Unfortunately, it's becoming increasingly common that errors are used as part of normal control flow.

  • AbortController throws an AbortError as part of cancellation logic.
  • A lot of web frameworks use throwing errors as part of request response logic using e.g. https://www.npmjs.com/package/http-errors. Hence, a normal 404 response can have nontrivial overhead due to to creating and throwing an error instead of simply doing res.statusCode = 404; res.end(); return;.
  • Web specs use throwing errors as a normal flow control mechanism (e.g. WebStreams)

Hence the current state of constructing errors in Node is not optimal. The errors are heavily enriched with lots of helpful information, however at a huge performance cost. We need to investigate what can be done to improve this and discuss possible compromises.

Metadata

Metadata

Assignees

No one assigned

    Labels

    benchmark-neededAdd to issues that does not have a benchmark

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions