constructor(options = {}) {
    super(options);

    // Construct websocket connection details from parameters
    this.requestParams = getSocketRequestParams(options);
    assert(this.requestParams.bufferLength, 'bufferLength must be provided');

    this.retrySettings = {
      retries: this.requestParams.retryAttempts,
      minTimeout: 500,
      randomize: true
    };

    // Reconnection state
    this.lastRequest = null;
    this.bufferRange = rangeUtils.empty();
  }
constructor
@params serverConfig {object}
  - serverConfig.serverUrl {string}
  - serverConfig.defaultLogLength {number, optional} - default 30
  - serverConfig.queryParams {object, optional}
  - serverConfig.retryAttempts {number, optional} - default 3
@params worker {string|function, optional}
@params maxConcurrency {number, optional} - default 3
@params logGuid {string}
@params logProfile {string, optional}
@params duration {number, optional}
@params timestamp {number, optional}
@params bufferLength {number, optional}