From 42e06a84d9ef75f7547ff4584802494c55d3c82a Mon Sep 17 00:00:00 2001
From: ruanyf <yifeng.ruan@gmail.com>
Date: Mon, 4 Jun 2018 11:12:30 +0800
Subject: [PATCH] docs(reference): edit reference

---
 docs/proxy.md     | 4 ++--
 docs/reference.md | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/docs/proxy.md b/docs/proxy.md
index d7bfbfe..6120bba 100644
--- a/docs/proxy.md
+++ b/docs/proxy.md
@@ -303,7 +303,7 @@ d.a === d // true
 
 上面代码中,`d`对象本身没有`a`属性,所以读取`d.a`的时候,会去`d`的原型`proxy`对象找。这时,`receiver`就指向`d`,代表原始的读操作所在的那个对象。
 
-如果一个属性不可配置(configurable)和不可写(writable),则该属性不能被代理,通过 Proxy 对象访问该属性会报错。
+如果一个属性不可配置(configurable)且不可写(writable),则 Proxy 不能修改该属性,否则通过 Proxy 对象访问该属性会报错。
 
 ```javascript
 const target = Object.defineProperties({}, {
@@ -420,7 +420,7 @@ myObj.foo === myObj // true
 
 上面代码中,设置`myObj.foo`属性的值时,`myObj`并没有`foo`属性,因此引擎会到`myObj`的原型链去找`foo`属性。`myObj`的原型对象`proxy`是一个 Proxy 实例,设置它的`foo`属性会触发`set`方法。这时,第四个参数`receiver`就指向原始赋值行为所在的对象`myObj`。
 
-注意,如果目标对象自身的某个属性,不可写或不可配置,那么`set`方法将不起作用。
+注意,如果目标对象自身的某个属性,不可写且不可配置,那么`set`方法将不起作用。
 
 ```javascript
 const obj = {};
diff --git a/docs/reference.md b/docs/reference.md
index 795c61e..9d2330f 100644
--- a/docs/reference.md
+++ b/docs/reference.md
@@ -140,6 +140,7 @@
 ## Promise 对象
 
 - Jake Archibald, [JavaScript Promises: There and back again](http://www.html5rocks.com/en/tutorials/es6/promises/)
+- Jake Archibald, [Tasks, microtasks, queues and schedules](https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/)
 - Tilde, [rsvp.js](https://github.com/tildeio/rsvp.js)
 - Sandeep Panda, [An Overview of JavaScript Promises](http://www.sitepoint.com/overview-javascript-promises/): ES6 Promise 入门介绍
 - Dave Atchley, [ES6 Promises](http://www.datchley.name/es6-promises/): Promise 的语法介绍