constructor(streamingV4Params, log, errCb) {
        const { accessKey, signatureFromRequest, region, scopeDate, timestamp,
            credentialScope } = streamingV4Params;
        super({});
        this.log = log;
        this.errCb = errCb;
        this.accessKey = accessKey;
        this.region = region;
        this.scopeDate = scopeDate;
        this.timestamp = timestamp;
        this.credentialScope = credentialScope;
        this.lastSignature = signatureFromRequest;
        this.currentSignature = undefined;
        this.haveMetadata = false;
        // keep this as -1 to start since a seekingDataSize of 0
        // means that chunk is just metadata (as is the case with the
        // last chunk)
        this.seekingDataSize = -1;
        this.currentData = undefined;
        this.dataCursor = 0;
        this.currentMetadata = [];
        this.lastPieceDone = false;
        this.lastChunk = false;
        this.clientError = false;
    }
@constructor
@param {object} streamingV4Params - info for chunk authentication
@param {string} streamingV4Params.accessKey - requester's accessKey
@param {string} streamingV4Params.signatureFromRequest - signature
sent with headers
@param {string} streamingV4Params.region - region sent with auth header
@param {string} streamingV4Params.scopeDate - date sent with auth header
@param {string} streamingV4Params.timestamp - date parsed from headers
in ISO 8601 format: YYYYMMDDTHHMMSSZ
@param {string} streamingV4Params.credentialScope - items from auth
header plus the string 'aws4_request' joined with '/':
timestamp/region/aws-service/aws4_request
@param {object} log - logger object
@param {function} errCb - callback called if an error occurs