toMatchRest( rsp, url, assert, source ) {
      const errIntro = `[${ source }] expected HTTP/S response matching ${ url }`,
            RE = /\"/g;
      if ( !rsp ) {
        // early exist, makes no sense to proceed
        return expectReturn( false, `${ errIntro }, but nothing intercepted` );
      }
      let res;

      res = testResponse( "status", assert, () => rsp.status() );
      if ( res !== true && !res.exp ) {
        return expectReturn( res.exp,
          `${ errIntro } with status code ${ res.expected.replace( RE, "" ) },`
          + ` but received code ${ res.actual.replace( RE, "" ) }` );
      }

      res = testResponse( "text", assert, () => rsp.data );
      if ( res !== true && !res.exp ) {
        return expectReturn( res.exp,
          `${ errIntro } with data ${ res.expected }, but received data `
            + `${ res.actual }` );
      }

      if ( assert.jpOperator && assert.jpOperator !== "any" ) {
        return expectReturn( matchJsonPath( rsp.data, assert.jpExp, assert.jpVal ),
          `${ errIntro } to match ${ assert.jpExp } = ${ assert.jpVal }, but nothing intercepted` );
      }

      if ( assert.headerOperator === "any" ) {
        return expectReturn( true, `${ errIntro }, but nothing intercepted` );
      }
      const pass = Object.entries( rsp.headers() )
        .find( pair => ( pair[ 0 ].toLowerCase() === assert.headerName.toLowerCase()
          && pair[ 1 ] === assert.headerValue ) );
      return expectReturn( Boolean( pass ),
        `${ errIntro } to have header ${ assert.headerName }: ${ assert.headerValue }, but it does not` );

    }
@param {Response} rsp
@param {String} url
@param {Object} assert
@param {String} source
@returns {Object}