async requestBinary(requestOptions, filePath) {
    const outFile = fs.createWriteStream(filePath);
    let response;
    try {
      response = await axios.request({ responseType: 'stream', ...requestOptions });
    } catch (error) {
      let errorData = '';
      if (error && error.response) {
        if (error.response.status)
          console.error('Error status code:', error.response.status);
        if (error.response.data) {
          error.response.data.on('data', data => errorData += data.toString('utf8'));
          try {
            await finishedAsync(error.response.data);
          } catch (error) {
            console.error('Error downloading entire response:', error);
          }
        }
      }
      console.error(`Error with http(s) request:\n${error}\nError data:\n${errorData}`);
      process.exit(1);
    }
    let count = 0;
    let notifiedCount = 0;
    response.data.on('data', data => {
      count += data.length;
      if ((count - notifiedCount) > 1024 * 1024) {
        console.log('Received ' + Math.floor(count / 1024) + 'K...');
        notifiedCount = count;
      }
    });
    response.data.on('end', () => console.log('Received ' + Math.floor(count / 1024) + 'K total.'));
    const pipe = response.data.pipe(outFile);
    await new Promise((resolve, reject) => {
      pipe.on('finish', resolve);
      pipe.on('error', reject);
    });
  }
@param {import('axios').AxiosRequestConfig} requestOptions
@param {string} filePath