async generateAddress() {
    let lock = new Lock(this._redis, 'generating_address_' + this._userid);
    if (!(await lock.obtainLock())) {
      // someone's already generating address
      return;
    }

    let self = this;
    return new Promise(function (resolve, reject) {
      self._lightning.newAddress({ type: 0 }, async function (err, response) {
        if (err) return reject('LND failure when trying to generate new address');
        const addressAlreadyExists = await self.getAddress();
        if (addressAlreadyExists) {
          // one last final check, for a case of really long race condition
          resolve();
          return;
        }
        await self.addAddress(response.address);
        if (config.bitcoind) self._bitcoindrpc.request('importaddress', [response.address, response.address, false]);
        resolve();
      });
    });
  }
Asks LND for new address, and imports it to bitcoind

@returns {Promise<any>}