async downloadFile (fileId) {
    if (!this.checkAuthorizationStatus()) return

    this.logger.debug('Downloading file', fileId)

    let res

    try {
      res = await pRetry(async () => {
        let params = {
          alt: 'media',
          fileId
        }

        if (this._data.drive.type === 'user') {
          params = {
            ...params,
            corpora: 'user',
            includeItemsFromAllDrives: false
          }
        } else {
          params = {
            ...params,
            driveId: this._data.drive.driveId,
            corpora: 'drive',
            includeItemsFromAllDrives: true,
            supportsTeamDrives: true
          }
        }

        const result = await this.driveClient.files.get(params, {
          responseType: 'arraybuffer'
        })

        return result
      }, {
        onFailedAttempt: async (error) => {
          this.logger.debug(`Attempt ${error.attemptNumber} failed. There are ${error.retriesLeft} retries left`)

          return new Promise((resolve) => {
            setTimeout(() => {
              resolve()
            }, 20000)
          })
        },
        retries: 5
      })
    } catch (error) {
      this.logger.error('Error while downloading file', fileId, error)
      return []
    }

    res = Buffer.from(res.data, 'binary')
    return res
  }
Download file by fileId

@param {String} fileId Google Drive fileId

@returns {ArrayBuffer} File buffer