Try the following in console:
m1 = new Map();
m1.set(Symbol.for("n1"), "v1");
m1.get(Symbol.for("n1"));
undefined
Actual: undefined
Expected: "v1"
Same works in Chrome and returns "v1".
Symbol.for() should have created an entry in the global symbol registry.
Screenshot below

EDGE version:
Microsoft Edge 42.17134.1.0
Microsoft EdgeHTML 17.17134
Windows 10 Enterprise Eval, Version: 1803, OS Build: 17134.1
Looks like this was already fixed in newer versions:
## Source
m1 = new Map();
m1.set(Symbol.for("n1"), "v1");
print(m1.get(Symbol.for("n1")));
#### Chakra, JavaScriptCore, SpiderMonkey, V8, V8 --harmony
v1
I tried in a recent Windows Insider build and it seems to confirm:

Thats good that newer builds have this working.
Do you know when this would be released in public/GA Edge builds?
That's pretty bizarre, I tried on an 1803 machine (17134.191) and didn't repro at first, but on the second attempt I got a slightly weird behavior:

@boingoing @MSLaguana any ideas?
Seems to work ok for me in the latest RS5 flight. I don't know when the bug was fixed, though. That behavior on 1803 doesn't look right. I wonder if that script was somehow executed on a different ThreadContext? The symbol global registry is per-ThreadContext.
I repeated using Symbol.for couple of times and see inconsistent behavior.
It sometimes allows me to set the same key twice in the map. This happens ~50% of the time.
I get a feeling Symbol.for() is having some issue where it sometimes does not see the symbols already created in the global registry.

I even went back to an older (by couple of months) Edge build on another Windows 10 instance and see similar behavior.
@kfarnung @boingoing
I don't think that this can be an issue with running on a different thread; I tried this:
var s = Symbol.for("n1");
var m1 = new Map();
m1.set(s, "v1");
for(var i = 0; i < 1000; ++i) {
var t = Symbol.for("n1");
if (t !== s) {
s2 = t;
console.log("Found");
break;
}
if (m1.get(t) !== m1.get(s)) {
s2 = t;
console.log("Get difference " + i);
break;
}
}
and that ends up printing "Get difference" with i either 0 or 1. Since it can happen with i=1 that says to me that m1.get isn't stable somehow.
It looks like the bug was fixed by @sethbrenith in 1c0c67e01475aa3a83cba1e1312275ad59498076 when he tweaked how symbols were created.
This will be fixed in the next release of edge. As a workaround in the current version of edge, if you only create a symbol once and keep re-using the same reference (e.g. instead of m1.set(Symbol.for("n1"),...) you did var sym = Symbol.for("n1"); m1.set(sym, …);) then I believe it should work as expected.
The above commit mentioned in @MSLaguana post was merged in January 2018. Do you know which version of Edge will have that merged fix? (fyi: To restate, this is still seen in version 42, the latest release)
Regarding the workaround, if I end up re-using the same reference to the Symbol by passing the reference around, then essentially it defeats the purpose of Symbol.for().
It is fixed in current insider builds, so the next (non-security patch) release of edge should have the fix.
Would that release be version 43?
I don't believe the Edge team has committed to the next version number, yet. It looks like current Insider flights of Windows include Edge version 44.
Most helpful comment
I don't believe the Edge team has committed to the next version number, yet. It looks like current Insider flights of Windows include Edge version 44.