Skip to content
This repository was archived by the owner on Nov 9, 2023. It is now read-only.

Commit d564a23

Browse files
authored
Factor runMiddleware into static method (#58)
1 parent 9ffe19e commit d564a23

1 file changed

Lines changed: 28 additions & 30 deletions

File tree

src/index.js

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -133,47 +133,45 @@ module.exports = class RpcEngine extends SafeEventEmitter {
133133

134134
// go down stack of middleware, call and collect optional returnHandlers
135135
for (const middleware of this._middleware) {
136+
isComplete = await RpcEngine._runMiddleware(
137+
req, res, middleware, returnHandlers,
138+
)
136139
if (isComplete) {
137140
break
138141
}
139-
await runMiddleware(middleware)
140142
}
141-
142143
return { isComplete, returnHandlers: returnHandlers.reverse() }
144+
}
143145

144-
// runs an individual middleware
145-
function runMiddleware (middleware) {
146-
return new Promise((resolve) => {
146+
// runs an individual middleware
147+
static _runMiddleware (req, res, middleware, returnHandlers) {
148+
return new Promise((resolve) => {
147149

148-
try {
149-
middleware(req, res, next, end)
150-
} catch (err) {
151-
end(err)
150+
const end = (err) => {
151+
const error = err || (res && res.error)
152+
if (error) {
153+
res.error = serializeError(error)
154+
res._originalError = error
152155
}
156+
resolve(true) // true indicates the request should end
157+
}
153158

154-
function next (returnHandler) {
155-
if (res.error) {
156-
end(res.error)
157-
} else {
158-
if (returnHandler) {
159-
returnHandlers.push(returnHandler)
160-
}
161-
resolve()
159+
const next = (returnHandler) => {
160+
if (res.error) {
161+
end(res.error)
162+
} else {
163+
if (returnHandler) {
164+
returnHandlers.push(returnHandler)
162165
}
166+
resolve(false) // false indicates the request should not end
163167
}
168+
}
164169

165-
function end (err) {
166-
isComplete = true
167-
168-
const error = err || (res && res.error)
169-
if (error) {
170-
res.error = serializeError(error)
171-
res._originalError = error
172-
delete res.result
173-
}
174-
resolve()
175-
}
176-
})
177-
}
170+
try {
171+
middleware(req, res, next, end)
172+
} catch (error) {
173+
end(error)
174+
}
175+
})
178176
}
179177
}

0 commit comments

Comments
 (0)