diff --git a/test/annexB/built-ins/RegExp/RegExp-control-escape-russian-letter.js b/test/annexB/built-ins/RegExp/RegExp-control-escape-russian-letter.js
index 851b881433049a010a3c38995310c7543d29d16b..96f19a266d5c798753666911f1d05a136c8ed8ce 100644
--- a/test/annexB/built-ins/RegExp/RegExp-control-escape-russian-letter.js
+++ b/test/annexB/built-ins/RegExp/RegExp-control-escape-russian-letter.js
@@ -5,19 +5,54 @@
 info: "CharacterEscape :: c ControlLetter"
 es5id: 15.10.2.10_A2.1_T3
 es6id: B.1.4
-description: "ControlLetter :: RUSSIAN ALPHABET is incorrect"
+description: >
+  "ControlLetter :: RUSSIAN ALPHABET is incorrect"
+  Instead, fall back to semantics to match literal "\\c"
 ---*/
 
-//CHECK#0410-042F
-for (var alpha = 0x0410; alpha <= 0x042F; alpha++) {
-  var str = String.fromCharCode(alpha % 32);
-  var arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
-  assert.sameValue(arr, null, 'RUSSIAN CAPITAL ALPHABET: ' + alpha);
+function* invalidControls() {
+  // Check upper case Cyrillic
+  for (var alpha = 0x0410; alpha <= 0x042F; alpha++) {
+    yield String.fromCharCode(alpha);
+  }
+
+  // Check lower case Cyrillic
+  for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
+    yield String.fromCharCode(alpha);
+  }
+
+  // Check ASCII characters which are not in the extended range or syntax
+  // characters
+  for (alpha = 0x00; alpha <= 0x7F; alpha++) {
+    let letter = String.fromCharCode(alpha);
+    if (!letter.match(/[0-9A-Za-z_\$(|)\[\]\/\\^]/)) {
+      yield letter;
+    }
+  }
+
+  // Check for end of string
+  yield "";
 }
 
-//CHECK#0430-044F
-for (alpha = 0x0430; alpha <= 0x044F; alpha++) {
-  str = String.fromCharCode(alpha % 32);
-  arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str);
-  assert.sameValue(arr, null, 'russian small alphabet: ' + alpha);
+for (let letter of invalidControls()) {
+  var source = "\\c" + letter;
+  var re = new RegExp(source);
+
+  if (letter.length > 0) {
+    var char = letter.charCodeAt(0);
+    var str = String.fromCharCode(char % 32);
+    var arr = re.exec(str);
+
+    if (arr !== null) {
+      $ERROR(`Character ${letter} unreasonably wrapped around as a control character`);
+    }
+  }
+  arr = re.exec(source.substring(1))
+  if (arr !== null) {
+    $ERROR(`invalid \\c escape matched c rather than \\c when followed by ${letter}`);
+  }
+  arr = re.exec(source)
+  if (arr === null) {
+    $ERROR(`invalid \\c escape failed to match \\c when followed by ${letter}`);
+  }
 }