function assimilate(untrustedThen, x) {
		return promise(function (resolve, reject) {
			fcall(untrustedThen, x, resolve, reject);
		});
	}
Safely assimilates a foreign thenable by wrapping it in a trusted promise
@param {function} untrustedThen x's then() method
@param {object|function} x thenable
@returns {Promise}