function to()

in apps/mountebank-mock/mountebank-source/src/models/http/httpProxy.js [190:227]


    function to (proxyDestination, originalRequest, options, requestDetails) {

        addInjectedHeadersTo(originalRequest, options.injectHeaders);

        function log (direction, what) {
            logger.debug('Proxy %s %s %s %s %s',
                originalRequest.requestFrom, direction, JSON.stringify(what), direction, proxyDestination);
        }

        return new Promise((resolve, reject) => {
            let proxiedRequest;
            try {
                proxiedRequest = getProxyRequest(proxyDestination, originalRequest, options, requestDetails);
            }
            catch (e) {
                reject(errors.InvalidProxyError(`Unable to connect to ${JSON.stringify(proxyDestination)}`));
            }

            log('=>', originalRequest);

            proxiedRequest.once('error', error => {
                if (error.code === 'ENOTFOUND' || error.code === 'EAI_AGAIN') {
                    reject(errors.InvalidProxyError(`Cannot resolve ${JSON.stringify(proxyDestination)}`));
                }
                else if (error.code === 'ECONNREFUSED' || error.code === 'ECONNRESET') {
                    reject(errors.InvalidProxyError(`Unable to connect to ${JSON.stringify(proxyDestination)}`));
                }
                else {
                    reject(error);
                }
            });

            proxy(proxiedRequest).then(response => {
                log('<=', response);
                resolve(response);
            });
        });
    }