async refreshToken (data) {
    if (!data) data = this._data
    data = data.oAuth
    if (!this.oAuth2Client) {
      this.oAuth2Client = new google.auth.OAuth2(data.client_id, data.client_secret, data.redirect_uri)
      this.oAuth2Client.setCredentials(data.token)
    }

    const expiryDate = this.oAuth2Client.credentials.expiry_date
    this.logger.debug('Token expiry date', expiryDate)
    if (((new Date()).getTime() + 600000) < expiryDate) return

    this.logger.debug('Refreshing access token')
    return new Promise((resolve, reject) => {
      this.oAuth2Client.refreshAccessToken((error, token) => {
        if (error) {
          this.logger.error('Error refreshing access token', error)
          reject(new Error('Error refreshing access token'))
          return
        }

        this.logger.debug('Got access token')
        this.logger.debug(token)
        resolve(token)
      })
    })
  }
Refresh Google API's access token

@param {Object=} data Google Driver configuration

@returns {Object} Google Driver configuration