diff --git a/js/process.ts b/js/process.ts
index bf75b6b32d..8ce83477a5 100644
--- a/js/process.ts
+++ b/js/process.ts
@@ -83,7 +83,7 @@ export class Process {
   }
 
   /** Buffer the stdout and return it as Uint8Array after EOF.
-   * You must have set stdout to "piped" in when creating the process.
+   * You must set stdout to "piped" when creating the process.
    * This calls close() on stdout after its done.
    */
   async output(): Promise<Uint8Array> {
@@ -97,6 +97,21 @@ export class Process {
     }
   }
 
+  /** Buffer the stderr and return it as Uint8Array after EOF.
+   * You must set stderr to "piped" when creating the process.
+   * This calls close() on stderr after its done.
+   */
+  async stderrOutput(): Promise<Uint8Array> {
+    if (!this.stderr) {
+      throw new Error("Process.stderrOutput: stderr is undefined");
+    }
+    try {
+      return await readAll(this.stderr);
+    } finally {
+      this.stderr.close();
+    }
+  }
+
   close(): void {
     close(this.rid);
   }
diff --git a/js/process_test.ts b/js/process_test.ts
index b442f0092a..051841ffeb 100644
--- a/js/process_test.ts
+++ b/js/process_test.ts
@@ -187,6 +187,17 @@ testPerm({ run: true }, async function runOutput() {
   p.close();
 });
 
+testPerm({ run: true }, async function runStderrOutput() {
+  const p = run({
+    args: ["python", "-c", "import sys; sys.stderr.write('error')"],
+    stderr: "piped"
+  });
+  const error = await p.stderrOutput();
+  const s = new TextDecoder().decode(error);
+  assertEquals(s, "error");
+  p.close();
+});
+
 testPerm({ run: true }, async function runEnv() {
   const p = run({
     args: [
diff --git a/website/manual.md b/website/manual.md
index f665d192d8..738d841856 100644
--- a/website/manual.md
+++ b/website/manual.md
@@ -398,8 +398,13 @@ async function main() {
 
   const { code } = await p.status();
 
-  const rawOutput = await p.output();
-  Deno.stdout.write(rawOutput);
+  if (code === 0) {
+    const rawOutput = await p.output();
+    Deno.stdout.write(rawOutput);
+  } else {
+    const rawError = await p.stderrOutput();
+    Deno.stdout.write(rawError);
+  }
 
   Deno.exit(code);
 }