Thanks for comments. I'll address them in the ED.
I didn't get through them all yet, but
* in parallel isn't defined, but it sounds like you mean in parallel to the
main sequence not in parallel to themselves, I'd strongly encourage a
in parallel is defined here:
add the links.
From: timeless [mailto:timel...@gmail.com]
Sent: Wednesday, July 01, 2015 1:23 PM
Subject: Re: PSA: publishing new WD of Service Workers on June 25
Invoke Run Service Worker algorithm with serviceWorker as the
Fetch invokes Handle Fetch with request. As a result of performing
Handle Fetch, the Service Woker [sic] returns a response to Fetch.
If the client request is under the scope of a service worker
registration, appplication [sic] cache is completely bypassed regardless
of whether the client request uses the service worker registration.
Events that correspond to network requests are dispatched to the worker
and the responses generated by the worker may over-ride* default network
Let the origin attribute of e be initialized to the Unicode
serialisation* of the origin specified by the incumbent settings object.
Service workers define the following behaviours* for install event and
When a service worker client is controlled by an active worker, it is
considered the service worker client is using the active worker's
containing service worker registration.
this is awkward, you might add `that` after `it is`
This is conceptually the same operation that UA does maximum once per
every 24 hours.
this is awkward, you might add `the` before `UA`, `a` after `does` and
`of` before `once`.
Run the following substeps in parallel:
1. CheckRegistration: If the result of running Match Service Worker
Registration algorithm, or its equivalent, with clientURL as its argument
is not null, then:
1.1. Set registration to the result value.
Else seems odd for `run...in parallel`
2.1. Wait until scope to registration map has a new entry.
2.2. Jump to the step labeled CheckRegistration.
cat spec|grep 'in parallel' | perl -pne 's/\s*,.*,\s*/ ...
/;s/.*( run)/$1/;s/(the ).*( handler)/$1...$2/;s/^\s*/ /'|sort|uniq -
-n|perl -pne 's/(?:\s*)(\d*)\s*(.*)\n/$2 [$1]\n/'
Return the ... handler ... performs the following substeps in
parallel:  Return the ... handler that performs the following
substeps in parallel:  Run the following in parallel:  Set p to
the ... handler that ... performs the following substeps in parallel:
 run the following substeps in parallel:  Return the ... handler
that ... performs the following substeps in parallel:  run the
following substeps in parallel.  Run these steps in parallel: 
Run the following substeps in parallel: 
* you use steps|substeps interchangeably afaict; you sometimes don't use
* you use .|: interchangeably
* various other inconsistent stylistic elements can be seen from the above
* in parallel isn't defined, but it sounds like you mean in parallel to
the main sequence not in parallel to themselves, I'd strongly encourage
The following are the event handlers (and its corresponding event
handler event types) that must be supported,
event handlers [plural!] (and its ...)
its = their
The service worker registration's installing worker changes. (See step 8
of the Install algorithm).
A WindowClient object has an associated focus state, which is either
true or false. (Initially false).
When event.respondWith(r) method is invoked, the argument, r, must
resolve with a Response, else a network error is returned to Fetch.
`must .. else` is an odd construct. normally `or` is appropriate...
The Cache objects do not expire unless authors delete the entries.
`objects ... the entries` is odd
the entries = them | objects = object entries ??
This implies that authors should version their caches by name and make
sure to **use the caches only from the version of the service worker that
can safely operate on**.
... = to only use caches that can be safely operated by the current
version of the service worker.
Cache objects are always enumerable via self.caches in insertion order
(per ECMAScript 6 Map objects.) Resolve p with the result of running
the algorithm specified in match(request, options) method of Cache
interface with request and options as the arguments (providing
entry.[[value]] as thisArgument to the [[Call]] internal method of
misplaced `.` (the other way...)
If r's method is