'use strict';

require('../fs/index.js');
require('../../../universalify/index.js');
var index = require('../../../../_virtual/index21.js');
var index$1 = require('../../../../_virtual/index20.js');

const fs = index$1.__exports;
const u = index.__exports.fromPromise;

async function utimesMillis (path, atime, mtime) {
  // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)
  const fd = await fs.open(path, 'r+');

  let closeErr = null;

  try {
    await fs.futimes(fd, atime, mtime);
  } finally {
    try {
      await fs.close(fd);
    } catch (e) {
      closeErr = e;
    }
  }

  if (closeErr) {
    throw closeErr
  }
}

function utimesMillisSync (path, atime, mtime) {
  const fd = fs.openSync(path, 'r+');
  fs.futimesSync(fd, atime, mtime);
  return fs.closeSync(fd)
}

var utimes = {
  utimesMillis: u(utimesMillis),
  utimesMillisSync
};

exports.utimes = utimes;
