// |reftest| module async // Copyright (C) 2019 Leo Balter. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- description: > AwaitExpression evaluates to abrupt completions in promise rejections info: | ModuleItem: StatementListItem[~Yield, +Await, ~Return] ... UnaryExpression[Yield, Await] void UnaryExpression[?Yield, ?Await] [+Await]AwaitExpression[?Yield] AwaitExpression[Yield]: await UnaryExpression[?Yield, +Await] esid: prod-AwaitExpression flags: [module, async] features: [top-level-await] ---*/ var x; try { await Promise.reject(42); } catch (e) { x = e; } assert.sameValue(x, 42, 'number'); try { await Promise.reject(''); } catch (e) { x = e; } assert.sameValue(x, '', 'string'); try { var s = Symbol(); await Promise.reject(s); } catch (e) { x = e; } assert.sameValue(x, s, 'symbol'); try { await Promise.reject(false); } catch (e) { x = e; } assert.sameValue(x, false, 'false'); try { await Promise.reject(true); } catch (e) { x = e; } assert.sameValue(x, true, 'true'); try { await Promise.reject(NaN); } catch (e) { x = e; } assert.sameValue(x, NaN, 'NaN'); try { await Promise.reject(null); } catch (e) { x = e; } assert.sameValue(x, null, 'null'); try { await Promise.reject(undefined); } catch (e) { x = e; } assert.sameValue(x, undefined, 'undefined'); try { var obj = {}; await Promise.reject(obj); } catch (e) { x = e; } assert.sameValue(x, obj, 'object'); $DONE();