From 093d9cd368506267bbf1b2502e59810d82607d04 Mon Sep 17 00:00:00 2001 From: Paul Melnikow <github@paulmelnikow.com> Date: Fri, 5 Jul 2019 21:26:05 -0400 Subject: [PATCH] Minor refactor: expose custom promisify function from legacy request handler (#3650) Cherry-picked from #3410; should simplify reworking it. --- core/base-service/legacy-request-handler.js | 41 ++++++++++++--------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/core/base-service/legacy-request-handler.js b/core/base-service/legacy-request-handler.js index 78ee9ec984..30980f7708 100644 --- a/core/base-service/legacy-request-handler.js +++ b/core/base-service/legacy-request-handler.js @@ -63,6 +63,25 @@ function flattenQueryParams(queryParams) { return Array.from(union).sort() } +function promisify(cachingRequest) { + return (uri, options) => + new Promise((resolve, reject) => { + cachingRequest(uri, options, (err, res, buffer) => { + if (err) { + if (err instanceof ShieldsRuntimeError) { + reject(err) + } else { + // Wrap the error in an Inaccessible so it can be identified + // by the BaseService handler. + reject(new Inaccessible({ underlyingError: err })) + } + } else { + resolve({ res, buffer }) + } + }) + }) +} + // handlerOptions can contain: // - handler: The service's request handler function // - queryParams: An array of the field names of any custom query parameters @@ -231,24 +250,9 @@ function handleRequest(cacheHeaderConfig, handlerOptions) { }) } - // Wrapper around `cachingRequest` that returns a promise rather than - // needing to pass a callback. - cachingRequest.asPromise = (uri, options) => - new Promise((resolve, reject) => { - cachingRequest(uri, options, (err, res, buffer) => { - if (err) { - if (err instanceof ShieldsRuntimeError) { - reject(err) - } else { - // Wrap the error in an Inaccessible so it can be identified - // by the BaseService handler. - reject(new Inaccessible({ underlyingError: err })) - } - } else { - resolve({ res, buffer }) - } - }) - }) + // Wrapper around `cachingRequest` that returns a promise rather than needing + // to pass a callback. + cachingRequest.asPromise = promisify(cachingRequest) vendorDomain.run(() => { const result = handlerOptions.handler( @@ -304,6 +308,7 @@ function clearRequestCache() { module.exports = { handleRequest, + promisify, clearRequestCache, // Expose for testing. _requestCache: requestCache, -- GitLab