diff --git a/index.bs b/index.bs
index be955446..57317917 100644
--- a/index.bs
+++ b/index.bs
@@ -394,8 +394,12 @@ Each [=command=] is defined by:
- A result type, which is defined by a [=local
end definition=] fragment.
- A set of [=remote end steps=] which define the actions to take for a command
- given a [=BiDi session=] and [=command parameters=] and return an
- instance of the command [=result type=].
+ given a [=BiDi session=] and [=command parameters=]. If the command runs to
+ completion these steps return [=success=] with either a [=map=] matching the
+ command [=result type=] production or with null to indicate an
+ EmptyResult
. If the command does not run to completion these
+ steps return [=error=] with the [=error code=] that will be reported to the
+ user.
A command that can run without an active session is a static
command. Commands are not static commands unless stated in their
@@ -797,6 +801,8 @@ To handle an incoming message given a [=WebSocket connection=]
1. Let |value| be |result|'s data.
+ 1. If |value| is null, set |value| to an empty map.
+
1. Assert: |value| matches the definition for the [=result type=]
corresponding to the command with [=command name=] |method|.
@@ -4917,7 +4923,7 @@ The [=remote end steps=] given |session| and |command parameters| are:
1. Remove |script| from |preload script map|.
-1. Return null
+1. Return [=success=] with data null