node.js 942 Bytes
/**
 * Http client (Node).
 */

import Promise from '../../promise';
import { each, trim } from '../../util';

export default function (request) {

    const client = require('got');

    return new Promise(resolve => {

        var url = request.getUrl();
        var body = request.getBody();
        var method = request.method;
        var headers = {}, handler;

        request.headers.forEach((value, name) => {
            headers[name] = value;
        });

        client(url, {body, method, headers}).then(handler = (resp) => {

            var response = request.respondWith(resp.body, {
                    status: resp.statusCode,
                    statusText: trim(resp.statusMessage)
                }
            );

            each(resp.headers, (value, name) => {
                response.headers.set(name, value);
            });

            resolve(response);

        }, error => handler(error.response));
    });
}