diff --git a/hack/bundle-opentelemetry.ts b/hack/bundle-opentelemetry.ts
index ddb7773..a9d56e7 100755
--- a/hack/bundle-opentelemetry.ts
+++ b/hack/bundle-opentelemetry.ts
@@ -1,12 +1,12 @@
-#!/usr/bin/env -S deno run --allow-run --allow-read --allow-write=. --allow-env
+#!/usr/bin/env -S deno run --allow-run --allow-read --allow-write=. --allow-env --allow-sys --allow-ffi
 
 // pass --refresh-yarn to force rerunning yarn on the opentelemetry packages
 
-import { rollup, Plugin } from 'npm:rollup';
-import { nodeResolve } from 'npm:@rollup/plugin-node-resolve';
-import commonjs from 'npm:@rollup/plugin-commonjs';
-import sourcemaps from 'npm:rollup-plugin-sourcemaps';
-import cleanup from 'npm:rollup-plugin-cleanup';
+import { rollup, Plugin } from 'npm:rollup@4.17.2';
+import { nodeResolve } from 'npm:@rollup/plugin-node-resolve@15.2.3';
+import commonjs from 'npm:@rollup/plugin-commonjs@25.0.7';
+import sourcemaps from 'npm:rollup-plugin-sourcemaps@0.6.3';
+import cleanup from 'npm:rollup-plugin-cleanup@3.2.1';
 import dts from 'npm:rollup-plugin-dts@4.2.3';
 // import { terser } from "npm:rollup-plugin-terser";
 
diff --git a/instrumentation/http-server.ts b/instrumentation/http-server.ts
index 0421faa..f5777c0 100644
--- a/instrumentation/http-server.ts
+++ b/instrumentation/http-server.ts
@@ -88,6 +88,9 @@ export function httpTracer(inner: Deno.ServeHandler, opts?: {
         const respSnoop = snoopStream(resp.body);
         respSnoop.finalSize.then(size => {
           serverSpan.setAttribute(SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, size);
+        }).catch(err => {
+          // NOTE: err can be "resource closed" when the client walks away mid-response.
+          serverSpan.recordException(err);
         }).finally(() => {
           inflightMetric.add(-1, reqMetricAttrs);
           serverSpan.end();