return (config.timeout
    ? Promise.race([
        Promise.resolve(promise),
        new Promise((_resolve, reject) => {
          setTimeout(() => reject(new Error(`Timeout: ${config.timeout}ms`)), config.timeout);