Q:

localeCompare with ASCII style lexicographical sorting

I was trying what I hoped to be a trivial exercise in coding: sorting Javascript strings with an ASCII style lexicographical order (e.g. numbers before capitalized letters before lowercased letters...). 
Here's a snippet:
var str1 = "ab";
var str2 = "Ab";
var n = str1.localeCompare(
    str2, "en", {sensitivity: 'variant', caseFirst: "upper"}
);

In this case, I would expect n to be 1, but it returns -1 instead. 
From the documentation on this page:

the sensitivity value set as variant would allow differentiating between all base and accented letters, including case
the caseFirst value set as upper would force upper-cased letters to compare smaller than lower-cased letters
the lack of usage parametrization would default to sort, which would be irrelevant here anyway since I'm specifying variant
the lack of ignorePunctuation parametrization would default to false

I am assuming the options override the default locale settings, although I couldn't find any specific information on the matter. 
In truth if it defaulted to en-US and had priority over the options, then I imagine case would be ignored (e.g. see accepted answer here). 
What am I doing wrong?
Notes

I am mentioning "ASCII" here for the sole purpose of identifying a sorting order that does not ignore case and sorts uppercase letters before lowercase letters where applicable. I would ultimately employ this for unicode strings as well. 
As suggested by some, this is likely engine-dependent. 
Replicated with Firefox ESR 52.6.0, and Chromium 64.0.3282.167.

A:

I'm not sure how you're getting -1. When I run the exact code you've provided, I get 1. I only get -1 when testing with str1.localeCompare(str2). Perhaps make note of this warning:

Implementations are not required to support this property.

If your sensitivity is set to variant, and your caseFirst to upper, that's already the default comparison for strings. Locale is typically used for synonymizing character variants. Also, in ASCII and Unicode, uppercase already comes before lowercase. So you just need -(str1 < str2) || +(str1 > str2) and avoid the function call altogether:

var str1 = "ab";
var str2 = "Ab";
var a = str1.localeCompare(
    str2, "en", {sensitivity: 'variant', caseFirst: "upper"}
);
var b = -(str1 < str2) || +(str1 > str2);
console.log(a, b);

