// Reviewed function shouldBe(expected, actual, msg) { if (msg === void 0) msg = ""; else msg = " for " + msg; if (actual !== expected) throw new Error("bad value" + msg + ": " + actual + ". Expected " + expected); } function shouldBeAsync(expected, run, msg) { let actual; var hadError = false; run().then(function(value) { actual = value; }, function(error) { hadError = true; actual = error; }); drainMicrotasks(); if (hadError) throw actual; shouldBe(expected, actual, msg); } var d = ({ x : "bar", y : function() { return async z => this.x + z; }}).y(); var e = { x : "baz", y : d }; shouldBeAsync("barley", () => d("ley")); shouldBeAsync("barley", () => e.y("ley"));