diff --git a/spec.bs b/spec.bs
index 4fe4ffd..529dcbb 100644
--- a/spec.bs
+++ b/spec.bs
@@ -116,6 +116,15 @@ Take the handwritten text "int" for example:
If the application wants to delete character "t", it can remove stroke 3 and 4 from the drawing.
+
When {{HandwritingDrawing/getPrediction()}} is invoked:
+ 1. If `this`.[=HandwritingDrawing/recognizer=].[=HandwritingRecognizer/active=] isn't true, return a [=a promise rejected with=] {{"InvalidStateError"}} {{DOMException}}.
+ 1. If `this`.[=HandwritingDrawing/strokes=] is empty, return a [=a promise resolved with=] a new empty [=list=].
+ 1.
Convert `this` drawing into a format suitable for [=handwriting recognizer=].
1. Let |p| be a new Promise, run the following step [=in parallel=]
- 1. If `this`.[=HandwritingDrawing/recognizer=].[=HandwritingRecognizer/active=] isn't true, reject |p| with a new {{DOMException}} whose name is {{"InvalidStateError"}} and abort.
- 1. If `this`.[=HandwritingDrawing/strokes=] is empty, resolve |p| with a new empty [=list=].
- 1. Let |result| be a list.
- 1.
Convert `this` drawing into a format suitable for [=handwriting recognizer=].
- 1. Send the converted drawing to [=handwriting recognizer=], and retrieves its prediction.
- 1.
Convert the retrieved predictions into {{HandwritingPrediction}}, then [=list/append=] the converted predictions to |result|.
- 1. Resolve |p| with |result|.
+ 1. Send the converted drawing to [=handwriting recognizer=].
+ 1. Wait for [=handwriting recognizer=] to return its predictions.
+ 1. [=Queue a Handwriting Recognition API task=] to perform the following steps:
+ 1. Let |result| be a list.
+ 1. [=list/For each=] returned prediction |pred|:
+ 1.
Convert |pred| into {{HandwritingPrediction}} |idl_pred|.
+ 1. [=list/Append=] |idl_pred| to |result|.
+ 1. Resolve |p| with |result|.
+ 1. Return |p|