| Index: src/accessors.cc
 | 
| diff --git a/src/accessors.cc b/src/accessors.cc
 | 
| index 502dc4c1b256e1027dd2cf8234534da35b38a89e..31139b79614aaecb47559a3928fd299071be3d26 100644
 | 
| --- a/src/accessors.cc
 | 
| +++ b/src/accessors.cc
 | 
| @@ -204,6 +204,19 @@ void Accessors::ArrayLengthSetter(
 | 
|    if (JSArray::ObservableSetLength(array, length).is_null()) {
 | 
|      isolate->OptionalRescheduleException(false);
 | 
|    }
 | 
| +
 | 
| +  if (info.ShouldThrowOnError()) {
 | 
| +    uint32_t actual_new_len = 0;
 | 
| +    CHECK(array->length()->ToArrayLength(&actual_new_len));
 | 
| +    // Throw TypeError if there were non-deletable elements.
 | 
| +    if (actual_new_len != length) {
 | 
| +      Factory* factory = isolate->factory();
 | 
| +      isolate->Throw(*factory->NewTypeError(
 | 
| +          MessageTemplate::kStrictDeleteProperty,
 | 
| +          factory->NewNumberFromUint(actual_new_len - 1), array));
 | 
| +      isolate->OptionalRescheduleException(false);
 | 
| +    }
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1404,6 +1417,7 @@ static void ModuleGetExport(v8::Local<v8::Name> property,
 | 
|  static void ModuleSetExport(v8::Local<v8::Name> property,
 | 
|                              v8::Local<v8::Value> value,
 | 
|                              const v8::PropertyCallbackInfo<void>& info) {
 | 
| +  if (!info.ShouldThrowOnError()) return;
 | 
|    Handle<Name> name = v8::Utils::OpenHandle(*property);
 | 
|    Isolate* isolate = name->GetIsolate();
 | 
|    Handle<Object> exception =
 | 
| 
 |