function fakeBox(fn, cb) {
  let result;

  if (fakeCache) {
    result = fakeCache;
    fakeCache = null;
  } else {
    fakeCache = fn;
    result = (...args) => {
      cb(...args);
    };
  }

  return result;
}
fake function or restore function
@param   {Function} fn     target function
@param   {Function} cb     fake function