async function* f() {
  const x = Promise.resolve(1);
  const y = Promise.resolve(2);
  const fromX = yield x;
  return y;
View URL.js
"use strict";
const conversions = require("webidl-conversions");
const utils = require("./utils.js");
const Impl = require(".//URL-impl.js");
const impl = utils.implSymbol;
function URL(url) {
if (!this || this[impl] || !(this instanceof URL)) {
View 1-service-worker.js
"use strict";
const worker = new Worker("worker.js");
self.onfetch = e => {
e.respondWith(new Promise(resolve => {
const guid = generateGUID();
worker.addEventListener("message", function messageListener({ data: { readableStream, messageId } }) {
if (messageId !== guid) {
View 1-service-worker.js
"use strict";
const worker = new Worker("worker.js");
self.onfetch = e => {
const transform = TransformStream.identity();
e.respondWith(new Response(transform.readable));
// Give the worker the writable end. An identity transform stream will just shuffle
// bytes written there into transform.readable.

Redirecting GitHub Pages after a repository move

The problem

You have a repository, call it alice/repo. You would like to transfer it to the user bob, so it will become bob/repo.

However, you make heavy use of the GitHub Pages feature, so that people are often accessing GitHub will helpfully redirect all of your repository stuff hosted on after the move, but will not redirect the GitHub Pages hosted on

The solution


Web components reflection

What is a subset of HTML's reflection rules which we should make easy for web components?

Summary of HTML

HTML's reflection algorithms include:

  • URL strings
  • Enumeration strings ("limited to only known values")

Discussion of the potential keyword mixin

Web IDL (which is used for writing web specs) would like to introduce a concept of "mixins", which work by adding properties and methods to the mixin target. Currently this is accomplished by

interface MixinTarget { };

interface Mixin { };
MixinTarget implements Mixin;
View adoptedCallback.js
adoptedCallback(oldDocument, newDocument) {
const newWindow = newDocument.defaultView;
if (newWindow) {
// newDocument belongs to a window
const otherConstructor = newWindow.customElements.get(this.localName);
if (otherConstructor && otherConstructor._isFromPolymer) {
Object.setPrototypeOf(this, otherConstructor.prototype);
// Now any customizations that newWindow code has applied to the
View last-with-cancel.js
"use strict";
var pending = { then: function () {} };
// operation must accept as its first argument a cancel token
// if your operation does not support cancelation, use a shim:
// last((_, ...args) => realOp(...args));
module.exports = operation => {
let latestPromise = null;
let previousCancel = null;
View dot-promise-is-for-adapting-old-apis.js
function xhrAdapted(url, { cancelToken } = {}) {
const xhr = new XMLHttpRequest();
return new Promise((resolve, reject, cancel) => {
xhr.addEventListener("load", () => resolve(xhr.responseText));
xhr.addEventListener("error", () => reject(new Error("could not XHR")));
if (!cancelToken) return;
cancelToken.promise.then(reason => {