/// <summary> /// Resolves any pending promises queued in the execution scope. /// </summary> /// <remarks> /// Pending promises are resolved when the execution scope is /// disposed, but can be invoked directly to resolve pending values. /// </remarks> public void ResolvePendingPromises() { if (m_promiseTaskQueue == null || m_promiseTaskQueue.Count <= 0) { return; } var args = new IntPtr[] { m_context.Undefined.Handle.DangerousGetHandle() }; while (m_promiseTaskQueue.Count > 0) { var promise = m_promiseTaskQueue.Dequeue(); if (promise == null || promise.IsDisposed) { continue; } try { //All results from this are undefined. m_context.Engine.JsCallFunction(promise.Handle, args, (ushort)args.Length); } finally { m_context.Engine.JsRelease(promise.Handle); promise.Dispose(); } } }