* Constructs a promise for an immediate reference, passes promises through, or * coerces promises from different systems. * @param value immediate reference or promise
(value)
| 447 | * @param value immediate reference or promise |
| 448 | */ |
| 449 | function Q(value) { |
| 450 | // If the object is already a Promise, return it directly. This enables |
| 451 | // the resolve function to both be used to created references from objects, |
| 452 | // but to tolerably coerce non-promises to promises. |
| 453 | if (isPromise(value)) { |
| 454 | return value; |
| 455 | } |
| 456 | |
| 457 | // assimilate thenables |
| 458 | if (isPromiseAlike(value)) { |
| 459 | return coerce(value); |
| 460 | } else { |
| 461 | return fulfill(value); |
| 462 | } |
| 463 | } |
| 464 | Q.resolve = Q; |
| 465 | |
| 466 | /** |
no test coverage detected