{
  "slug": "koa-middleware-error-flow",
  "version": 1,
  "project": "koa",
  "title": "Koa middleware error handling and default response",
  "description": "Caught errors handled without rethrowing stay with custom middleware. Otherwise Koa snapshots headers and writability, emits the error event, then uses that saved state to gate its default response.",
  "config": {
    "design": "flowchart-top-down-diamonds-side-branches",
    "name": "middleware-error-flow",
    "style": "clean",
    "palette": [
      "#355e78"
    ],
    "parameters": {
      "nodes": [
        {
          "id": "throws",
          "label": "Downstream middleware throws",
          "kind": "start"
        },
        {
          "id": "caught",
          "label": "Caught without rethrow?",
          "kind": "decision"
        },
        {
          "id": "snapshot",
          "label": "Save response state",
          "kind": "process"
        },
        {
          "id": "emit",
          "label": "Emit error event",
          "kind": "process"
        },
        {
          "id": "allowed",
          "label": "Saved state allows a response?",
          "kind": "decision"
        },
        {
          "id": "default",
          "label": "Send default error response",
          "kind": "end"
        },
        {
          "id": "custom",
          "label": "Handle error in custom middleware",
          "kind": "end"
        },
        {
          "id": "eventonly",
          "label": "No response rewrite",
          "kind": "end"
        }
      ],
      "edges": [
        {
          "from": "throws",
          "to": "caught"
        },
        {
          "from": "caught",
          "to": "snapshot",
          "label": "No"
        },
        {
          "from": "caught",
          "to": "custom",
          "label": "Yes"
        },
        {
          "from": "snapshot",
          "to": "emit"
        },
        {
          "from": "emit",
          "to": "allowed"
        },
        {
          "from": "allowed",
          "to": "default",
          "label": "Yes"
        },
        {
          "from": "allowed",
          "to": "eventonly",
          "label": "No"
        }
      ]
    },
    "accessibility": {
      "title": "Koa middleware error handling and default response",
      "description": "Caught errors handled without rethrowing stay with custom middleware. Otherwise Koa snapshots headers and writability, emits the error event, then uses that saved state to gate its default response."
    }
  },
  "files": {
    "svg": {
      "url": "/diagram-sources/koa-middleware-error-flow/v1/diagram.svg",
      "sha256": "239b438cb0ba8cf3728f05ec4659a130b03c60163a8b3d0a45476c98604964a3"
    },
    "png": {
      "url": "/diagram-sources/koa-middleware-error-flow/v1/diagram.png",
      "sha256": "8cdfc7fa9fd97fb172faf5ef085f63f93cba01aa40a5de8ff990fad40d1771e3"
    }
  }
}
