helloadhavan/github_issues huggingface dataset:
Repository: denoland/deno
Pull request: fix(check): fix nil deref with `--unstable-tsgo`

Fixes https://github.com/denoland/deno/issues/31413

Changed files:
filename: cli/tsc/go/tsgo_version.rs
patch: @@ -23,15 +23,15 @@ impl Hashes {
   }
 }
 
-pub const VERSION: &str = "0.1.8";
+pub const VERSION: &str = "0.1.9";
 pub const DOWNLOAD_BASE_URL: &str =
-  "https://github.com/denoland/typescript-go/releases/download/v0.1.8";
+  "https://github.com/denoland/typescript-go/releases/download/v0.1.9";
 pub const HASHES: Hashes = Hashes {
-  windows_x64: "sha256:3e5c7102c387d1b85795e0baf402e93a1c3bd82d75b5ad90089ea72f0525bc22",
-  macos_x64: "sha256:5f31471910b585dfbffdd370ffd0d0dc9f408e1b7482e293a84246d7c8bf980b",
-  macos_arm64: "sha256:73d88c842a5276d721f38c6b749a923417f1c42f237fafe06ed4c50d772dda71",
-  linux_x64: "sha256:e83798203401f8fd31f2539ef23c1bc76a9bf02cfe6902dc854310ed8d994454",
-  linux_arm64: "sha256:f82e11a474bb9e69e0397c614ab30a08eb09c93c69bb3de19364ef660a851ede",
+  windows_x64: "sha256:11492f3a52979d92625985422a97bc72b3b25d22687d40349cbd07c70aaa9b87",
+  macos_x64: "sha256:3233c5011928c022fd1958d40d51565fec7ee485ee1d28d1836fbce4ac2dd668",
+  macos_arm64: "sha256:ca7a75c71eba9ea4cb6bd667f015fc26ceee41c0d53769e5c27ad59ba433611c",
+  linux_x64: "sha256:a87e7653f6ca82c4132c801a5299af06b802f51ba18270dc7f9fbc143adf2e03",
+  linux_arm64: "sha256:5b0f7aef634bbcad98c8947be54326d3ece6d87c450329c6cf71f7c609409803",
 };
 
 const _: () = {
Repository: ggml-org/llama.cpp
Pull request: opencl: fix rms_norm_mul

The rms_norm_mul kernel produces incorrect result when ne00 = 768. This PR changes how the kernel does reduction to get the sum. This seems to fix the issue.


Changed files:
filename: ggml/src/ggml-opencl/ggml-opencl.cpp
patch: @@ -5705,7 +5705,7 @@ static void ggml_opencl_op_rms_norm_fused(ggml_backend_t backend, ggml_tensor *
     CL_CHECK(clSetKernelArg(kernel, 21, sizeof(cl_ulong),      &nb2));
     CL_CHECK(clSetKernelArg(kernel, 22, sizeof(cl_ulong),      &nb3));
     CL_CHECK(clSetKernelArg(kernel, 23, sizeof(float),         &eps));
-    CL_CHECK(clSetKernelArg(kernel, 24, sizeof(float)*nth/sgs, NULL));
+    CL_CHECK(clSetKernelArg(kernel, 24, sizeof(float)*sgs,     NULL));
 
     backend_ctx->enqueue_ndrange_kernel(kernel, 3, global_work_size, local_work_size, dst);
 }

filename: ggml/src/ggml-opencl/kernels/rms_norm.cl
patch: @@ -134,6 +134,15 @@ kernel void kernel_rms_norm_mul(
     src1 = src1 + offset1;
     dst  = dst  + offsetd;
 
+    // The size of sum is sizeof(float)*subgroup_size.
+    // Each subgroup writes its partial sum to this array.
+    // So the number of subgroups per workgroup for this kernel cannot exceed the subgroup size.
+    // This is generally true -
+    // for subgroup size 64, workgroup size should be less than 4096 (the max is usually 1024).
+    if (get_sub_group_id() == 0) {
+        sum[get_sub_group_local_id()] = 0.0f;
+    }
+
     int i03 = get_group_id(2);
     int i02 = get_group_id(1);
     int i01 = get_group_id(0);
@@ -148,24 +157,30 @@ kernel void kernel_rms_norm_mul(
         sumf += dot(x[i00], x[i00]);
     }
     sumf = sub_group_reduce_add(sumf);
+
+    barrier(CLK_LOCAL_MEM_FENCE);
+
     if (get_sub_group_local_id() == 0) {
         sum[get_sub_group_id()] = sumf;
     }
 
     barrier(CLK_LOCAL_MEM_FENCE);
 
-    for (uint i = get_local_size(0) / get_max_sub_group_size() / 2; i > 0; i /= 2) {
-       if (get_local_id(0) < i) {
-           sum[get_local_id(0)] += sum[get_local_id(0) + i];
-       }
-    }
-    if (get_local_id(0) == 0) {
-        sum[0] /= ne00;
-    }
+    //for (uint i = get_local_size(0) / get_max_sub_group_size() / 2; i > 0; i /= 2) {
+    //   if (get_local_id(0) < i) {
+    //       sum[get_local_id(0)] += sum[get_local_id(0) + i];
+    //   }
+    //}
+    //if (get_local_id(0) == 0) {
+    //    sum[0] /= ne00;
+    //}
 
-    barrier(CLK_LOCAL_MEM_FENCE);
+    //barrier(CLK_LOCAL_MEM_FENCE);
+
+    sumf = sum[get_sub_group_local_id()];
+    sumf = sub_group_reduce_add(sumf);
 
-    float mean  = sum[0];
+    float mean  = sumf / ne00;
     float scale = 1.0f/sqrt(mean + eps);
 
     global float4 * y = (global float4 *) (dst + i03*nb3 + i02*nb2 + i01*nb1);
Repository: ollama/ollama
Pull request: follow best practices by adding resp.Body.Close()


Changed files:
filename: examples/golang-simplegenerate/main.go
patch: @@ -18,6 +18,8 @@ func main() {
 		os.Exit(1)
 	}
 
+	defer resp.Body.Close()
+	
 	responseData, err := io.ReadAll(resp.Body)
 	if err != nil {
 		log.Fatal(err)
Repository: ggml-org/llama.cpp
Pull request: convert : remove unnecessary chat template patching

Remove chat template patching that is no longer necessary:

- ochafik/minja#5
- google/minja#74

Changed files:
filename: convert_hf_to_gguf.py
patch: @@ -7840,12 +7840,6 @@ def set_vocab(self):
         special_vocab._set_special_token("unk", tokenizer.get_added_vocab()["
"]) # 151329
         special_vocab._set_special_token("eom", tokenizer.get_added_vocab()["
"])  # 151338
 
-        # Patch broken chat template
-        if isinstance(special_vocab.chat_template, str) and "visible_text(m.content).endswith" in special_vocab.chat_template:
-            special_vocab.chat_template = special_vocab.chat_template.replace(
-                """{{ visible_text(m.content) }}\n{{- '/nothink' if (enable_thinking is defined and not enable_thinking and not visible_text(m.content).endswith("/nothink")) else '' -}}""",
-                """{% set content = visible_text(m.content) %}{{ content }}\n{{- '/nothink' if (enable_thinking is defined and not enable_thinking and not content.endswith("/nothink")) else '' -}}""")
-
         special_vocab.add_to_gguf(self.gguf_writer)
 
     def set_gguf_parameters(self):
@@ -9395,16 +9389,6 @@ def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iter
 class SmolLM3Model(LlamaModel):
     model_arch = gguf.MODEL_ARCH.SMOLLM3
 
-    def set_vocab(self):
-        super().set_vocab()
-        # remove unsupported array slicing in chat template
-        # ref: https://huggingface.co/ggml-org/SmolLM3-3B-GGUF/discussions/1
-        from transformers import AutoTokenizer
-        tokenizer = AutoTokenizer.from_pretrained(self.dir_model)
-        if tokenizer.chat_template is not None:
-            chat_template = tokenizer.chat_template.replace("[:]", "")
-            self.gguf_writer.add_chat_template(chat_template)
-
 
 @ModelBase.register("GptOssForCausalLM")
 class GptOssModel(TextModel):
Repository: facebook/react
Pull request: Fix assertConsoleErrorDev on message mismatch with withoutStack: true


## Summary

```js
assertConsoleErrorDev([
  ['Hello', {withoutStack: true}]
])
```

now errors with a helpful diff message if the message mismatched. See first commit for previous behavior.

## How did you test this change?

- `yarn test --watch packages/internal-test-utils/__tests__/ReactInternalTestUtils-test.js`


Changed files:
filename: packages/internal-test-utils/__tests__/ReactInternalTestUtils-test.js
patch: @@ -2417,6 +2417,32 @@ describe('ReactInternalTestUtils console assertions', () => {
           If all errors should include the component stack, you may need to remove {withoutStack: true} from the assertConsoleErrorDev call."
         `);
       });
+
+      // @gate __DEV__
+      it('fails with a helpful error message if the expected error message mismatches', () => {
+        const message = expectToThrowFailure(() => {
+          console.error('Bye\n    in div');
+          assertConsoleErrorDev([
+            [
+              'Hello',
+              {
+                withoutStack: true,
+              },
+            ],
+          ]);
+        });
+        expect(message).toMatchInlineSnapshot(`
+          "assertConsoleErrorDev(expected)
+
+          Unexpected error(s) recorded.
+
+          - Expected errors
+          + Received errors
+
+          - Hello
+          + Bye <component stack>"
+        `);
+      });
     });
 
     // @gate __DEV__

filename: packages/internal-test-utils/consoleMock.js
patch: @@ -464,7 +464,12 @@ export function createLogAssertion(
       function printDiff() {
         return `${diff(
           expectedMessages
-            .map(message => message.replace('\n', ' '))
+            .map(messageOrTuple => {
+              const message = Array.isArray(messageOrTuple)
+                ? messageOrTuple[0]
+                : messageOrTuple;
+              return message.replace('\n', ' ');
+            })
             .join('\n'),
           receivedLogs.map(message => message.replace('\n', ' ')).join('\n'),
           {
Repository: denoland/deno
Pull request: fix(bundle): treat bun specifiers as external by default

Fixes #31397

Changed files:
filename: cli/tools/bundle/mod.rs
patch: @@ -967,6 +967,7 @@ impl esbuild_client::PluginHandler for DenoPluginHandler {
       // to the output file. It will be tricky to figure out which
       // output file this import will end up in. We may have to use the metafile and rewrite at the end
       let is_external = r.starts_with("node:")
+        || r.starts_with("bun:")
         || self
           .externals_matcher
           .as_ref()

filename: tests/specs/bundle/bun_specifier_external/__test__.jsonc
patch: @@ -0,0 +1,9 @@
+{
+  "tempDir": true,
+  "steps": [
+    {
+      "args": "bundle main.ts -o out.js",
+      "output": "[WILDCARD]\nBundled 1 module in [WILDCARD]s\n  out.js [WILDCARD]"
+    }
+  ]
+}

filename: tests/specs/bundle/bun_specifier_external/main.ts
patch: @@ -0,0 +1,2 @@
+const { ptr } = await import("bun:ffi");
+console.log(ptr);
Repository: electron/electron
Pull request: fix: enable `autoHideMenuBar` tests on Linux and Windows

Backport of #46818

See that PR for details.


Notes: Fixed documentation to mark `Window.autoHideMenuBar` as supported on Linux and Windows.

Changed files:
filename: docs/api/base-window.md
patch: @@ -398,7 +398,7 @@ A `View` property for the content view of the window.
 
 A `string` (optional) property that is equal to the `tabbingIdentifier` passed to the `BrowserWindow` constructor or `undefined` if none was set.
 
-#### `win.autoHideMenuBar`
+#### `win.autoHideMenuBar` _Linux_ _Windows_
 
 A `boolean` property that determines whether the window menu bar should hide itself automatically. Once set, the menu bar will only show when users press the single `Alt` key.
 

filename: docs/api/browser-window.md
patch: @@ -499,7 +499,7 @@ A `Integer` property representing the unique ID of the window. Each ID is unique
 
 A `string` (optional) property that is equal to the `tabbingIdentifier` passed to the `BrowserWindow` constructor or `undefined` if none was set.
 
-#### `win.autoHideMenuBar`
+#### `win.autoHideMenuBar` _Linux_ _Windows_
 
 A `boolean` property that determines whether the window menu bar should hide itself automatically. Once set, the menu bar will only show when users press the single `Alt` key.
 

filename: docs/api/structures/base-window-options.md
patch: @@ -58,8 +58,8 @@
   `false` on macOS. This option is not configurable on other platforms.
 * `disableAutoHideCursor` boolean (optional) - Whether to hide cursor when typing.
   Default is `false`.
-* `autoHideMenuBar` boolean (optional) - Auto hide the menu bar unless the `Alt`
-  key is pressed. Default is `false`.
+* `autoHideMenuBar` boolean (optional) _Linux_ _Windows_ - Auto hide the menu bar
+  unless the `Alt` key is pressed. Default is `false`.
 * `enableLargerThanScreen` boolean (optional) _macOS_ - Enable the window to
   be resized larger than screen. Only relevant for macOS, as other OSes
   allow larger-than-screen windows by default. Default is `false`.

filename: spec/api-browser-window-spec.ts
patch: @@ -2361,10 +2361,10 @@ describe('BrowserWindow module', () => {
     });
   });
 
-  describe('autoHideMenuBar state', () => {
+  ifdescribe(process.platform !== 'darwin')('autoHideMenuBar state', () => {
     afterEach(closeAllWindows);
 
-    it('for properties', () => {
+    describe('for properties', () => {
       it('can be set with autoHideMenuBar constructor option', () => {
         const w = new BrowserWindow({ show: false, autoHideMenuBar: true });
         expect(w.autoHideMenuBar).to.be.true('autoHideMenuBar');
@@ -2380,7 +2380,7 @@ describe('BrowserWindow module', () => {
       });
     });
 
-    it('for functions', () => {
+    describe('for functions', () => {
       it('can be set with autoHideMenuBar constructor option', () => {
         const w = new BrowserWindow({ show: false, autoHideMenuBar: true });
         expect(w.isMenuBarAutoHide()).to.be.true('autoHideMenuBar');
Repository: ollama/ollama
Pull request: Guard integration tests with a tag

This should help CI avoid running the integration test logic in a container where it's not currently possible.

Changed files:
filename: scripts/setup_integration_tests.sh
patch: @@ -2,6 +2,9 @@
 
 # This script sets up integration tests which run the full stack to verify
 # inference locally
+#
+# To run the relevant tests use
+# go test -tags=integration ./server
 set -e
 set -o pipefail
 
@@ -21,15 +24,15 @@ for model in ${TEST_MODELS[@]}; do
     echo "Pulling manifest for ${TEST_MODEL}:${TEST_MODEL_TAG}"
     curl -s --header "${ACCEPT_HEADER}" \
         -o ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG} \
-        ${REGISTRY_SCHEME}://${REGISTRY}/v2/${TEST_MODEL}/manifests/${TEST_MODEL_TAG} 
+        ${REGISTRY_SCHEME}://${REGISTRY}/v2/${TEST_MODEL}/manifests/${TEST_MODEL_TAG}
 
     CFG_HASH=$(cat ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG} | jq -r ".config.digest")
     echo "Pulling config blob ${CFG_HASH}"
     curl -L -C - --header "${ACCEPT_HEADER}" \
-            -o ${OLLAMA_MODELS}/blobs/${CFG_HASH} \
-            ${REGISTRY_SCHEME}://${REGISTRY}/v2/${TEST_MODEL}/blobs/${CFG_HASH}
+        -o ${OLLAMA_MODELS}/blobs/${CFG_HASH} \
+        ${REGISTRY_SCHEME}://${REGISTRY}/v2/${TEST_MODEL}/blobs/${CFG_HASH}
 
-    for LAYER in $(cat ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG} | jq -r ".layers[].digest" ) ; do
+    for LAYER in $(cat ${OLLAMA_MODELS}/manifests/${REGISTRY}/${TEST_MODEL}/${TEST_MODEL_TAG} | jq -r ".layers[].digest"); do
         echo "Pulling blob ${LAYER}"
         curl -L -C - --header "${ACCEPT_HEADER}" \
             -o ${OLLAMA_MODELS}/blobs/${LAYER} \

filename: server/llm_image_test.go
patch: @@ -1,3 +1,5 @@
+//go:build integration
+
 package server
 
 import (

filename: server/llm_test.go
patch: @@ -1,3 +1,5 @@
+//go:build integration
+
 package server
 
 import (

filename: server/llm_utils_test.go
patch: @@ -1,3 +1,5 @@
+//go:build integration
+
 package server
 
 import (
@@ -38,7 +40,7 @@ func PrepareModelForPrompts(t *testing.T, modelName string, opts api.Options) (*
 }
 
 func OneShotPromptResponse(t *testing.T, ctx context.Context, req api.GenerateRequest, model *Model, runner llm.LLM) string {
-	prompt, err := model.Prompt(PromptVars{
+	prompt, err := model.PreResponsePrompt(PromptVars{
 		System: req.System,
 		Prompt: req.Prompt,
 		First:  len(req.Context) == 0,
@@ -54,6 +56,7 @@ func OneShotPromptResponse(t *testing.T, ctx context.Context, req api.GenerateRe
 			success <- true
 		}
 	}
+
 	predictReq := llm.PredictOpts{
 		Prompt: prompt,
 		Format: req.Format,
Repository: ggml-org/llama.cpp
Pull request: convert : use all parts in safetensors index

Use all file parts in safetensors index, even if they are not named `model*.safetensors`. Still requires **some** of the files to be named that for detection to work (due to `consolidated.safetensors`).

Fixes #16361

Changed files:
filename: convert_hf_to_gguf.py
patch: @@ -189,10 +189,10 @@ def index_tensors(self, remote_hf_model_id: str | None = None) -> dict[str, Call
             return tensors
 
         prefix = "model" if not self.is_mistral_format else "consolidated"
-        part_names: list[str] = ModelBase.get_model_part_names(self.dir_model, prefix, ".safetensors")
+        part_names: set[str] = set(ModelBase.get_model_part_names(self.dir_model, prefix, ".safetensors"))
         is_safetensors: bool = len(part_names) > 0
         if not is_safetensors:
-            part_names = ModelBase.get_model_part_names(self.dir_model, "pytorch_model", ".bin")
+            part_names = set(ModelBase.get_model_part_names(self.dir_model, "pytorch_model", ".bin"))
 
         tensor_names_from_index: set[str] = set()
 
@@ -209,6 +209,7 @@ def index_tensors(self, remote_hf_model_id: str | None = None) -> dict[str, Call
                     if weight_map is None or not isinstance(weight_map, dict):
                         raise ValueError(f"Can't load 'weight_map' from {index_name!r}")
                     tensor_names_from_index.update(weight_map.keys())
+                    part_names |= set(weight_map.values())
             else:
                 weight_map = {}
         else:
Repository: huggingface/transformers
Pull request: Remove unnecessary tildes from documentation

The [stable documentation (v4.56.1)](https://huggingface.co/docs/transformers/v4.56.1/en/quicktour#pipeline) contains unnecessary tildes in the `infer_device()` method link.

<img width="945" height="554" alt="image" src="https://github.com/user-attachments/assets/6db44575-f965-496d-8b4b-8e7c90a0c3e6" />

## Before submitting
- [x] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [ ] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#create-a-pull-request),
      Pull Request section?
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [ ] Did you write any new necessary tests?


## Who can review?

Documentation: @stevhliu

Changed files:
filename: docs/source/en/quicktour.md
patch: @@ -124,7 +124,7 @@ Create a [`Pipeline`] object and select a task. By default, [`Pipeline`] downloa
 <hfoptions id="pipeline-tasks">
 <hfoption id="text generation">
 
-Use [`~infer_device`] to automatically detect an available accelerator for inference.
+Use [`infer_device`] to automatically detect an available accelerator for inference.
 
 ```py
 from transformers import pipeline, infer_device
@@ -144,7 +144,7 @@ pipeline("The secret to baking a good cake is ", max_length=50)
 </hfoption>
 <hfoption id="image segmentation">
 
-Use [`~infer_device`] to automatically detect an available accelerator for inference.
+Use [`infer_device`] to automatically detect an available accelerator for inference.
 
 ```py
 from transformers import pipeline, infer_device
@@ -171,7 +171,7 @@ segments[1]["label"]
 </hfoption>
 <hfoption id="automatic speech recognition">
 
-Use [`~infer_device`] to automatically detect an available accelerator for inference.
+Use [`infer_device`] to automatically detect an available accelerator for inference.
 
 ```py
 from transformers import pipeline, infer_device
Repository: denoland/deno
Pull request: fix(ext/node): autopadding behavior on `crypto.Cipheriv`

Fixes #29756 and #31360

Changed files:
filename: ext/node/polyfills/internal/crypto/cipher.ts
patch: @@ -223,7 +223,10 @@ export class Cipheriv extends Transform implements Cipher {
     this.#lazyInitDecoder(encoding);
 
     const buf = new FastBuffer(16);
-    if (this.#cache.cache.byteLength == 0) {
+    const hasNoBufferedData = this.#cache.cache.byteLength === 0;
+    const shouldPadEmptyBlock = this.#needsBlockCache && this.#autoPadding;
+
+    if (hasNoBufferedData && !shouldPadEmptyBlock) {
       const maybeTag = op_node_cipheriv_take(this.#context);
       if (maybeTag) this.#authTag = Buffer.from(maybeTag);
       return encoding === "buffer" ? Buffer.from([]) : "";

filename: tests/unit_node/crypto/crypto_cipher_test.ts
patch: @@ -569,3 +569,26 @@ Deno.test({
     assertEquals(decryptedText, text);
   },
 });
+
+Deno.test({
+  name: "createCipheriv - setAutoPadding behavior",
+  fn() {
+    const algorithm = "aes-256-cbc";
+    const key = Buffer.alloc(32, 0);
+    const iv = Buffer.alloc(16, 0);
+
+    const cipherWithAutoPadding = crypto
+      .createCipheriv(algorithm, key, iv)
+      .setAutoPadding(true);
+    let encrypted = cipherWithAutoPadding.update("", "utf8", "binary");
+    encrypted += cipherWithAutoPadding.final("binary");
+    assertEquals(encrypted.length, 16);
+
+    const cipherWithoutAutoPadding = crypto
+      .createCipheriv(algorithm, key, iv)
+      .setAutoPadding(false);
+    let otherEncrypted = cipherWithoutAutoPadding.update("", "utf8", "binary");
+    otherEncrypted += cipherWithoutAutoPadding.final("binary");
+    assertEquals(otherEncrypted.length, 0);
+  },
+});
Repository: nodejs/node
Pull request: fs: remove IIFE in glob

Refs: https://github.com/nodejs/node/issues/58419

Changed files:
filename: lib/fs.js
patch: @@ -34,6 +34,7 @@ const {
   ObjectDefineProperties,
   ObjectDefineProperty,
   Promise,
+  PromisePrototypeThen,
   PromiseResolve,
   ReflectApply,
   SafeMap,
@@ -3171,15 +3172,11 @@ function glob(pattern, options, callback) {
   callback = makeCallback(callback);
 
   const Glob = lazyGlob();
-  // TODO: Use iterator helpers when available
-  (async () => {
-    try {
-      const res = await ArrayFromAsync(new Glob(pattern, options).glob());
-      callback(null, res);
-    } catch (err) {
-      callback(err);
-    }
-  })();
+  PromisePrototypeThen(
+    ArrayFromAsync(new Glob(pattern, options).glob()),
+    (res) => callback(null, res),
+    callback,
+  );
 }
 
 function globSync(pattern, options) {

filename: test/parallel/test-fs-glob-throw.mjs
patch: @@ -0,0 +1,16 @@
+import { mustCall } from '../common/index.mjs';
+import { glob } from 'node:fs';
+import process from 'node:process';
+import { strictEqual } from 'node:assert';
+
+// One uncaught error is expected
+process.on('uncaughtException', mustCall((err) => {
+  strictEqual(err.message, 'blep');
+}));
+
+{
+  // Test that if callback throws, it's not getting called again
+  glob('a/b/c', mustCall(() => {
+    throw new Error('blep');
+  }));
+}