פתרון איך חוקרים מנגנון חדש¶
הניסוי עם ManualContext מפריד בין שני אירועים: רישום continuation וביצועו. הקריאה לProbe מגיעה לawait, שולחת את ההמשך לPost ומחזירה משימה שאינה שלמה. רק הpump מפעיל את ההמשך, באותו thread שבו הmain כבר רץ.
הגרסה בלי context יכולה להשתמש במסלול תזמון אחר. ההמשך יכול להתבצע מהר מאוד, ולכן בדיקת IsCompleted מיד אחרי Probe אינה חייבת להחזיר false. זאת אינה סתירה להשעיה בתוך הawait; זאת התקדמות מקבילה אחרי שההמשך תוזמן.
הסדר המובטח בניסוי הידני כולל את enqueue לפני dequeue ואת סיום ההמשך לפני השלמת המשימה. סדר ההדפסות לבדו אינו מפרט memory model של כל מסלול runtime. כאשר מוסיפים producers נוספים צריך לתקן גם את המונה ואת מנגנון ההמתנה, ולא להרחיב את הטענות של הניסוי מעבר לקוד שלו.
הדוח על מנגנון חדש יכול להיראות כך: ההשערה ניבאה החלפת thread הכרחית; הניסוי תיעד דחייה וחזרה לאותו thread; המקור הציג מסלול דרך context; לכן ההשערה נדחתה והוחלפה בחוזה שתלוי בcontext. ההסבר נשען על שלוש ראיות שמתאימות זו לזו.
המשך עבודה טוב מחפש גבול של ההסבר החדש. לדוגמה, מחליפים את הcontext בבסיסי, בודקים scheduler מותאם או משנים גרסת runtime. לא קוראים לשינוי כזה regression לפני שבודקים אם ההתנהגות הקודמת הייתה בכלל הבטחה.