diff --git a/test/language/expressions/class/constructor-this-tdz-during-initializers.js b/test/language/expressions/class/constructor-this-tdz-during-initializers.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe859e7531cf11de6f8aceef10d942ea95163c8c
--- /dev/null
+++ b/test/language/expressions/class/constructor-this-tdz-during-initializers.js
@@ -0,0 +1,43 @@
+// Copyright (C) 2018 Kevin Gibbons. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-super-keyword-runtime-semantics-evaluation
+description: >
+    `this` is bound in the constructor of derived classes immediately before running initializers
+info: |
+    [...]
+    6. Let result be ? Construct(func, argList, newTarget).
+    [...]
+    10. Perform ? thisER.BindThisValue(result).
+    11. Perform ? InitializeInstanceFields(result, F).
+    [...]
+features: [class-fields-public]
+---*/
+
+
+var probeCtorThis;
+var thisDuringField;
+var thisFromProbe;
+var thisDuringCtor;
+
+class Base {
+  constructor() {
+    assert.throws(ReferenceError, probeCtorThis);
+  }
+}
+
+var C = class extends Base {
+  field = (thisDuringField = this, thisFromProbe = probeCtorThis());
+  constructor() {
+    probeCtorThis = () => this;
+    assert.throws(ReferenceError, probeCtorThis);
+    super();
+    thisDuringCtor = this;
+  }
+};
+
+var instance = new C();
+
+assert.sameValue(thisDuringField, instance);
+assert.sameValue(thisFromProbe, instance);
+assert.sameValue(thisDuringCtor, instance);