code: function oboeStreamRequest (oboe, request) {
  
      if (arguments.length < 2) {
          throw new Error('oboe-stream-request, expects 2 arguments');
      }
  
      const OBOE_ABORTED_EVENT = 7;
  
      return (requestOptions) => {
  
          let req        = request(requestOptions),
              oboeStream = oboe(),
              handlers   = oboeStreamRequest.setup(req, oboeStream);
  
          req
              .on('response', handlers.onResponse)
              .on('error', handlers.onError);
  
          // oboe will emit this event internally when an abort is received, but
          // its not really publically documented, and has a non-intuitive name
  
          oboeStream.on(OBOE_ABORTED_EVENT, handlers.onAborted);
  
          return oboeStream;
      };
  }
docs: /* eslint-enable indent 
  @ngdoc function
  @name oboeStreamRequest
  
  @description
  Wrapper for using oboe.js & request.js together by providing
  a similar interface as the bundled HTTP client. This should
  permit more options to be set as part of the request eg: PROXY
  
  @param {function}    oboe      oboe.js module
  @param {function}    request   request.js module
  
  @example
  
  const request = require('request'),
  oboe    = require('request'),
  fetch   = require('oboe-stream-request')(oboe, request);
  
  fetch({
  url : 'http://myhost.com/json.json'
  .... other request.js options
  })
  .on('start',   () => { ... })
  .on('fail',    () => { ... })
  .on('aborted', () => { ... })
  .on('done',    () => { ... })