public void Exchange_MustReturnTrue()
        {
            var once = new ConcurrentOnce();
            var ok   = once.Exchange();

            Assert.IsTrue(ok);
        }
        public async Task RunWhenExchanged_MustReturnFail()
        {
            var once = new ConcurrentOnce();
            var res1 = once.WaitAsync(TimeSpan.FromSeconds(3));
            var res2 = once.Exchange();

            Assert.IsTrue(res2);
            Assert.IsFalse(await res1);
        }