async write(filepath, contents, options = {}) {
    try {
      await this._writeFile(filepath, contents, options)
      return
    } catch (err) {
      // Hmm. Let's try mkdirp and try again.
      await this.mkdir(dirname(filepath))
      await this._writeFile(filepath, contents, options)
    }
  }
Write a file (creating missing directories if need be) without throwing errors.

@param {string} filepath
@param {Buffer|Uint8Array|string} contents
@param {object|string} [options]