Evaluate each option:
A. Arguments for .then() are optional.
This is correct.
then() has the signature:
promise.then(onFulfilled?, onRejected?)
Both arguments (onFulfilled and onRejected) are optional.
If a callback is not supplied, JavaScript provides a default pass-through handler.
B. .then() cannot be added after a catch.
Incorrect.
Promises support chaining in any order:
promise
catch(...)
then(...);
After a catch, the chain continues normally.
C. .then() manipulates and returns the original promise.
Incorrect.
then() always returns a new promise , not the original one.
This is fundamental to promise chaining behavior.
D. Returning values in .then() is not necessary.
Incorrect.
If you want the next .then() in the chain to receive a value, the current .then() must explicitly return it:
then(value = > {
return value * 2; // passes to next .then()
})
If nothing is returned, the next .then() receives undefined.
Why A is correct
It is the only statement that accurately describes built-in Promise behavior:
then() accepts optional arguments.
JavaScript Knowledge References (text-only)
.then(onFulfilled?, onRejected?) accepts optional handlers.
Promise chaining creates new promises for each .then().
catch() can be followed by additional .then() calls.
Returning inside .then() passes values to the next step in the chain.