Move some logic from makePromise to PromiseMonitor