Operations that return a Promise type should handle exceptions by returning a rejected Promise with the exception.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

PASS Rejected as expected: no arguments
PASS reason instanceof Error is true
TypeError: Failed to execute 'promiseCheck' on 'Internals': 5 arguments required, but only 0 present.
PASS Resolved as expected: valid arguments
PASS Resolved as expected: convert(long)
PASS Resolved as expected: convert(boolean)
PASS Rejected as expected: type error(Dictionary)
PASS reason instanceof Error is true
TypeError: Failed to execute 'promiseCheck' on 'Internals': parameter 3 ('arg3') is not an object.
PASS Resolved as expected: convert(String)
PASS Rejected as expected: conversion error(toString)
PASS reason instanceof Error is true
Error: Thrown from toString
PASS Rejected as expected: conversion error([String])
PASS reason instanceof Error is true
Error: Thrown from toString
PASS Rejected as expected: rejected by the impl
PASS reason instanceof Error is true
InvalidStateError: Failed to execute 'promiseCheck' on 'Internals': Thrown from the native implementation.
PASS Rejected as expected: no arguments
PASS reason instanceof Error is true
TypeError: Failed to execute 'promiseCheckWithoutExceptionState' on 'Internals': 2 arguments required, but only 0 present.
PASS Resolved as expected: valid arguments
PASS Resolved as expected: valid arguments
PASS Rejected as expected: type error(Dictionary)
PASS reason instanceof Error is true
TypeError: Failed to execute 'promiseCheckWithoutExceptionState' on 'Internals': parameter 1 ('arg1') is not an object.
PASS Resolved as expected: convert(String...)
PASS Rejected as expected: conversion error(String...)
PASS reason instanceof Error is true
Error: Thrown from toString
PASS Rejected as expected: range error(octet)
PASS reason instanceof Error is true
TypeError: Failed to execute 'promiseCheckRange' on 'Internals': Value is outside the 'octet' value range.
PASS Resolved as expected: valid argument (Location)
PASS Resolved as expected: valid argument (Document)
PASS Resolved as expected: valid argument (Location, long, long)
PASS Rejected as expected: type error (Object)
PASS reason instanceof Error is true
TypeError: Failed to execute 'promiseCheckOverload' on 'Internals': No function was found that matched the signature provided.
PASS Rejected as expected: type error (Location, long)
PASS reason instanceof Error is true
TypeError: Failed to execute 'promiseCheckOverload' on 'Internals': Valid arities are: [1, 3], but 2 arguments provided.
PASS successfullyParsed is true

TEST COMPLETE

