Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129313 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id A52591A00BC for ; Wed, 19 Nov 2025 18:27:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1763576831; bh=zcd31eTV3/VCRFt2t1v/akJ2+qM+0xvlna1baMFLbKo=; h=Date:Subject:To:References:From:In-Reply-To:From; b=NI5ChUOe00tGmGyM0yznYdrocpnuPPN+9jEznZ4d2vQKAESSZGhvBwQbkDwbzoM9e GYr9AqFfsKNEmJbSsP6dHZ8NsHzaCNoeak0OMVqQ2yec1/t8UPY3ckdCXaLS/VElZ0 5pPhXxx7mA9dIIFprsRBr59Kt9EHIucDk16PQJoYOEXHraWjH6JaRIxjKw3oh5pgtO bqEarfkLq/QESI0jenp+qnDxhCYNk+65lJu1qQkyXYPt2Fam+TVVHQpzxw9VPGhrcS 72VXU5whGdlP2ve9YXo5plOKR6jDRguh9ufWGLdG1WJ1sYEfJmTwCwtwEnieiEZfS1 j6ZlW4lWE4Zmw== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 71E51180394 for ; Wed, 19 Nov 2025 18:27:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_50, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2, SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazolkn19010004.outbound.protection.outlook.com [52.103.33.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 19 Nov 2025 18:27:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PqIZbflHFEPj1FRiDzzfBHnT7hgwX2HIzWwTwk3uxyW3VK23tnp3Bt2IYzB4nr3SLXlfzvpTpDcrMHhBT9mfDAq7G8TsGHTS5HGzME3IDwewkkfeqAjwvi4nHC0sOaxx+i8+n8JnMcLW7WItyCemUfExnaqM9TfAOy5GYgbkBoZY/Xwg2NGH69UWcmuqmc4pifQJo+yXSbFYQ8YRzK3fwww7Vvu8FBg0CyeU6j29MNvwEhdneqW12zsGxRZmHNWQyV494kJYtCItlAJOQdncepM6mIpywdYp/hU/5kGggsjbJPoElN1o1OxmFNrmou5ZJE4uWdLS4S+Opu2Lp2S4HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZJ8gZel9DcNfdyDigX1olxHGYC4uv0VVSHgMDLsMgGM=; b=xTnPXIG8BHUkqL9PaJIxj81DLPiCYmUT+mGUmxTw23Ij/YeJ0o1YKfVP8HI/22UBdphzje7nGcsDtKKG9JK2u++KJONXRXCllAEXjBUa7bhMRPmenlOLkqsB8NXv+4XGkzl6YBhKutuDFkCtaAGAw/3y+GJKp/QmLK59whfAwweAQJ85+E734uIyN3D+Q1R/rpQs4BWQe6HMAF0UhMr9etZoCH8VRZieA6mwDwaDJT++oIcSfbNZM17cAe3bMVagxcQI+QMWdASijYEPoX7Cqfp/l7FVTC+v2mjkJ8uqGNBW0mSo+SSqssa3n+k2lyqo3Nht/JXZb+5edOvqIgr0Aw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZJ8gZel9DcNfdyDigX1olxHGYC4uv0VVSHgMDLsMgGM=; b=fMxnusJsHD7l0esK6sppXbXLqP/f80s9bUNNo9B82foFFdN+EhmzhToTu/XUOB/Nxt7KmrWdiKx2Hb4cQIO5MabGr2lWLinu+zFszwSP+RUl24kfPbRvGk6VQEqfs5F8oW2+r/7WLYo7u3c3/ez29FnwspffhtmyZoiAqXxSuft53A07ka04oGpwRuF5Uk2A9soGtYA2H2/pWIZrkWE+wMldiZBocc5Z/CJ/Dl3UQ/bCMSEI+sFMAlAy0hAQeBGob//Ay1xSZwYXCS0qbcGgYKWVXZzW8uT9wFKClhCe6LUTuCBjGH+Lbdp+zpoRWJouovlwqKBABGAUdPvcgYeePQ== Received: from AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) by DU0P250MB0842.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3e5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.10; Wed, 19 Nov 2025 18:27:03 +0000 Received: from AM8P250MB0170.EURP250.PROD.OUTLOOK.COM ([fe80::651e:bbd2:b18a:80ff]) by AM8P250MB0170.EURP250.PROD.OUTLOOK.COM ([fe80::651e:bbd2:b18a:80ff%3]) with mapi id 15.20.9320.013; Wed, 19 Nov 2025 18:27:03 +0000 Message-ID: Date: Wed, 19 Nov 2025 19:27:00 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV] [VOTE] True Async RFC 1.6 To: Edmond Dantes , php internals References: Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: PAZP264CA0081.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1fa::13) To AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) X-Microsoft-Original-Message-ID: <2f4d8a04-4980-451e-991a-d4c24408fd36@hotmail.com> Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM8P250MB0170:EE_|DU0P250MB0842:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a90a515-8da4-49ef-f7e6-08de27993c0f X-MS-Exchange-SLBlob-MailProps: YfhX3sd/0TWnHr2aTc7oye/bilYJDP7ynmHBm0N6a0vV6xAnNc8gDXgzfQUwxZwp+3QRDtHFPedcUtpvtUYwoik1D4sWEriDkNTJUOogLUe0qAMjn0nQpL6MTuKuSvIKsafR+6R5nKTDz4p3s3Cj/m0L+m023wrHByesKq8EqVWNvlS2oxYwnaCpOeBHT/XRceFUH70UvVeDnpLnqUZrureUkEQHlrL10WzuNCQtMjOqrV/sv7ApanQ1qqr8eqn/IA054TJ5tYDYAijP/9Aywe6g30rmD/WUTq+ZXyS8BKOgrAdqpXJohkyQo7ogF1yEzSwYRFLT/lgUtvwkovrPQTLKMN115brAJ4M+g7hY+IIMuX0FgU0p+qvVt/Fi0+xqp+Kv/1ltsBN5zHUs524OFWQsOuO50KjqrC1GGsqgw60o6GXSAM+qeC9y5/rK8wGzYCwX27TgLJJwzflSZHsoSuiY9Rk7ZiWQ/xwoqtMf8lV9zieqQXw11OhnvdeJPaS6+Am8Oq0IucQ0yN5kZHlzApqFJ1WkRytUba5/U+r+utn/34CZYjbDkn2iEJfPNf4yToEi7n/6kZt6fz6AlRKN3aAOKC2yOYtFFcZZP3oZoq8Q8J1GNwmLdmODhLEtwKRkgzOVgN+bFbOvGti2Cng8dDBLQOOpjvBDfLF7PQBMPvrabfn38eHQqboG+F921egHUaqAPFs5tQaLFqZh0wk1PWMxW6Y8pLG/QaqslVF8YGx4ZrVSkHburA8dndX0q+nMlO3wSZ98FQj/RbZEJQ5bkbxPf9iDbWqGbFWQKBdzfoE= X-Microsoft-Antispam: BCL:0;ARA:14566002|6090799003|19110799012|5072599009|8060799015|51005399006|41001999006|23021999003|461199028|13031999003|15080799012|56899033|1602099012|40105399003|4302099013|440099028|3412199025|10035399007|26104999006|12091999003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QWV0eW5xemhVd3lkR1oyNWFCeUFkNmJOdWpubi9wd3ZCT2FSZTl4MStqTXNa?= =?utf-8?B?eDVtcUw0cm1tZ2QrbU94RFpod2tZdm1BZjBmYU5YTW9iQURQK0wwZjVFNWo4?= =?utf-8?B?a3VzZ2o0YnBGR1ZDWXRpMzROV3g3NjkwU01jQkFZelFweDkyNHYyRksybWFZ?= =?utf-8?B?bFJHcFU4N1hDcitybDdnZkRCb2Z2TTNNUGt3RkxQR28wOXhVWDlMcmNZc3Zo?= =?utf-8?B?NlR2YlVoUFRWVVBzZWtidkF2eUxXeXI5UFdLbStoUjJmQjF2bmd2NEQvKzRS?= =?utf-8?B?ZWV6c0RwYVErZXRMc3lQMkFBcHpMWGhnU1FOd2JWdFc2UlFiN2ZQVDFxbVBJ?= =?utf-8?B?VFdYVng4UXFQdDdsZFZBcWJIQjBVcVQ1ZStiVHZCK2hsbVd0T1oydUlKTWFw?= =?utf-8?B?dEY4N0NBUUhRSmJKR3VpamNKZElVTnpwZVVtWExxSjZzR2MrUUdiUGxkamx3?= =?utf-8?B?WUV6dUdYRFZiQUt0cXRSbUtXdnVvVWlIRy9zdzlGVENUdjBzRlMxdG1UbDFo?= =?utf-8?B?QjVNVzI0bGVBcWQ1dStxR2xUM04rQ2E1SUNtRFNKMmlTeEZZRWR0ajZvaERk?= =?utf-8?B?cjhBcytYdnZ2a2Rjb1FrMmlGZS9vR1dLYnc4ZEg5WG42ZkNVVVFid2FoM2hm?= =?utf-8?B?R2R1dU9rWE1QZFhjMWNaVitDc0dSSWNzY0JuUXZvekxpamt2TkYydVptOHBO?= =?utf-8?B?VCtUdjh4RW52U1lZN1hLVENzc0ZWcEhWV1FmMGRvVU5laWRnbnpsRlRMV24x?= =?utf-8?B?S3k0Vzd6a0RUbVV6Yi9PWFZWZmsxRzA0dUFTOUtwTUUzWDhPVDAxazJ6Y2t6?= =?utf-8?B?c0Nra0pjOUZ5ZEtnbUZtLzZvNTBEeXd6UDM5andSeXlHRnptQ0s3ZTBReTIw?= =?utf-8?B?eVJJTnh4aTN3aHFJQjZwTXlER2lCcG9KQVFRZVpqU0I2UVRlSEVTK3dQbSsz?= =?utf-8?B?RGhDbS93c3lsY3pxaDUwdUEramRURjhkZ3JULzdyNUJvTThNQW93WFBsQ3RG?= =?utf-8?B?RGJzTHpRdUhHUWRudzhvMmx1bHFBS1A1dFpWbnFHNktuUEdmNUxnTHFPOXBB?= =?utf-8?B?eXFkenFlWE0zVUI5VGlMU1FjRXk0ZGhRV0Eza2FtLy9vSnJrM3dkYzJ1YWRj?= =?utf-8?B?QjE1emEyZFNKM3JCa0F0VDVwUmMrYmdQREdhbmpvQ0gySGlJSXgwNkhCUGlv?= =?utf-8?B?T0luYXJCUmkyTDUzdVNYTVhXcmVNVS9PditqUllpbVg2VytPMHJoalVWV21N?= =?utf-8?B?RXlYdGkySVJRcW50SVRyWW95Q0N5SmZyVTFtekU4djJqSEpXWGR3dGI2WGx6?= =?utf-8?B?YTMvcEVYQ2cxcE91enZsOUJ6MWlqcFVEdFMwSW91TE1oLzRTUlA5OVc0R0RD?= =?utf-8?B?UnMwZ0U4MGdyV2tjL2VmNzFYV2VGNm13Qk1pRS9hSG9oM2E2YmdRdkJPMnlQ?= =?utf-8?B?dCtBcm9PaVlwQnNiYWNpbGFVRXdmLzNSYkxzaUpVREJibkE5dDYzSkpqam9r?= =?utf-8?B?Y0pYaEFTWVNDVnlrdlJJaWNkc3dFMkRwNWx3OVRiV2dnNFA0Mng2S1IyTnMr?= =?utf-8?B?VDh1bFB1YWFyTDNQMXo0VStNVkZ5L3RhZDRlbWlDclJpWTFMSXFEOXVMR0c1?= =?utf-8?B?QUFGUkpvREVhcC80dEJBUnYvcDNOL0pDS25OU3kxRUNtNDJYQ1R4WkQ0MFFr?= =?utf-8?B?ZTJIUXNqMlFYc1ZLMEQ0NndDbm12NVF5LzdybnVjTUp3TTVLczAySkJidjNJ?= =?utf-8?B?WEE4UGJ3dGo0WEg5aTlKMjFWeU91dWc2SnNGa3JBRXpEQ0dlYTl1OVJrM2wy?= =?utf-8?B?SGdqSTZQMWxNZHBnMk1HRkJjNXVFa1ZwbUJqM2l3T1FxYUcwbjJyWGFlYnd5?= =?utf-8?B?L0NTT0k2aUlFeUgwL2F2c1Jod0xvMzFoM2tIR2syYXZPcEVOczVRMEZNNGN1?= =?utf-8?B?WHN0ajN1Q2xvZ0tWVGZmaXUwV1RWbTltbHpHOFVmQ0Z3ZWR3czFjdFNGMGNH?= =?utf-8?B?YVloWkJ5S0VBPT0=?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QzdLSUhNdWY4YlVFUGdYem5FUGJBOTNjdnFhNnpEd3lDQk4vc3R2OEFzRElU?= =?utf-8?B?ZGQ2RU1XbEhGQXRFY3VWUWwwNzR3akNpVDhUUVVuQzk3STBaVzU5RlVzQmNP?= =?utf-8?B?dVVCSWg0QlhOS3k3cEJvMytRUWdhZC9lWjlJUmxtZnl3dlFNZ1E5c1F6YWtO?= =?utf-8?B?UGora1dOdmlaZE43RnpOL0dXNFdzWVpXenluemE5TVZ4eUFPMjRlUE1lZVZ4?= =?utf-8?B?b3lsTUxuUHdzaUd4YWdaUTNlNi82dTdmdm9wdEY1Z01FWmhOaWxDcG1QRVV3?= =?utf-8?B?T0JmS0UxRkRqZGVOenVpL2JKUzhWOG83UTkyZ2hFZ3dVRzExRlc2MDNEYVVY?= =?utf-8?B?VWorZ3NtYksyczZZczZyS0w4VGMvdjJvYlZyZ2g4RE1VRnZaRFdVUUwzc3FL?= =?utf-8?B?TVR5QzhHdGpmZ2kvcWVlZVlCNTNqVW8xNUMxU2h4ZXdJQXhhNHdvOWFPYjlF?= =?utf-8?B?VnIvSzM1c1F2QzNNVVVnbjlBSkdBN2ZvVHAxZWJSTG9vZDVHaVBkQ0haNW5X?= =?utf-8?B?RVlQMk5hdWZ3czN6QjcxdngyK0ZIRFZIUDZPU0pYTnF3MmwybHd2ay9kOGFv?= =?utf-8?B?T0ZPZlVGaHVMbzB4MlpOcXUwdnFxMnA4azYvSk5xTFQwLzZzYS8vTHhNVk9W?= =?utf-8?B?SERBKzkwa2VJYVhNdjdjQlk0TVJZcVZvOFdwSHJ0SXlkOHhkWWFDOWU3K1Az?= =?utf-8?B?aDZSMGw2TUVzajdzMmNic3VyMFp3MGxCaHpzRWk2UWJ5VlJTajZ0UzVxcHVI?= =?utf-8?B?WjNVSVBwaDhrVzVBQUgxd051Umd1bnRhRk9hMVBjcFRsdkgwMzZFRHBHaDdI?= =?utf-8?B?Y0I4Sm5FRG1XTFJRamVBanVFZC8vTnVVaFd5b0o4QTRhY2NVbjJ3L0czK21h?= =?utf-8?B?bW4wdE50TXF5Ui8rK3NTL3ZselB5MEI2SFJPZUhmUC94NEhDOWV0RkUvdGVo?= =?utf-8?B?NVpXRU81UUJ6ektLQlNoNHRCRnBNekxXU3JjTE9PYmdycGs4cDNQQU9Ta1Na?= =?utf-8?B?d0lWY3hNS2dXK1ZaRHRrZ0docXNlRnBXTXN6TmRtUXBEd1EvbHJLbjRHRkFk?= =?utf-8?B?bFByQ1hpWnEyTXJCbEZEbE5iVEYwK3BPWlZjZnZ6M3B4RnA5MDZsWFp3TW9G?= =?utf-8?B?M1JZWDVrcUMzMXJmUmlSOGhWcGZPZFlXdCsyVm85UUVSanF3TG5PSkEva09O?= =?utf-8?B?WHdVY3BLalgwL0RqMlNpamdLTjR3M3NhdlRzdENIcjZ3N2dwaTJ5ajBlWkxX?= =?utf-8?B?Z29td0NnK2RkS094dkhnU3VJQ2tLamgzeEtIWXlIU0V0c2J0UFZtcFVwMXJo?= =?utf-8?B?YWgreXdwN0s4SWJKcGRjbUprNEFnMlZ5Yy9IMFZLMzFjTFJCZm1zWmMvUmxW?= =?utf-8?B?bUFIRDVjalFPYVlmNmNnV3lVTk1iYlF0SzMySmQzVk1oUkJtRWxxaUJZQnNp?= =?utf-8?B?NWpGTG9TOWVMYmJDN1A5K05SbmlsSDdzVGhCUFAwdHRQK25oc0V6RjB5c1g5?= =?utf-8?B?YnZVQWxCK05OaVl1ZHkvWlJDcm8xaDlnbEpjUkl3YzFrNTdkK1BEZVozS3Fn?= =?utf-8?B?OUpjYm13TTVBQmhqQjEyKytCOEFOazhpY1RwQVM3RUg3TlZMV0RTWlQ3Zjk0?= =?utf-8?B?WXdpWUxnc3JhRkFML0NOMzVyQUpXR3VTQVdCNWRLeDY5OVB6M3JGQTNaUVM5?= =?utf-8?B?L2ZlYkUrUjBia0NCNmFnT0Z4b2hEWmNueDFsZzViZld0bE1uVm83WGtnOTNN?= =?utf-8?Q?ruRs89wmHfYSfnfjAg=3D?= X-OriginatorOrg: sct-15-20-8534-15-msonline-outlook-5f066.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 6a90a515-8da4-49ef-f7e6-08de27993c0f X-MS-Exchange-CrossTenant-AuthSource: AM8P250MB0170.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Nov 2025 18:27:03.0106 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0P250MB0842 From: bobwei9@hotmail.com (Bob Weinand) Hello Edmond, On 19.11.2025 13:35:13, Edmond Dantes wrote: > Hello all > > According to all previous discussions, version 1.6 of this RFC has > been prepared and is now being submitted for a vote: > > Voting Page: https://wiki.php.net/rfc/true_async/voting > RFC https://wiki.php.net/rfc/true_async > > The vote officially starts tomorrow, as previously announced. This comes a bit of sudden. For sure, you respected the minimum discussion period, though there was still active discussion just yesterday and the few days before. I was also planning to give the now shortened variant of the RFC a thorough read and read the discussions around it. Others seem to also indicate that there were still a couple open points for discussion - thus I would advise you to cancel the vote and discuss these points first, then go ahead with a vote again a week later. My own thoughts on the RFC (from just reading the RFC in depth, without considering prior conversations now): I agree with the choices of separating Fiber and Coroutine, but I disagree that there's a fundamental problem with allowing Fibers in Coroutines. A Fiber is essentially just a stackful generator, from a very-high-level perspective. You allow generators to be used with Coroutines. There should be no fundamental reason this isn't possible. It just might require some refactoring of the code to manage it properly (i.e. just like you cannot continue a generator which is currently active, but suspended in a fiber, you should not be able to resume a fiber which is currently active, but suspended in a coroutine). Cancellation is not an Error - Errors are generally for programmer errors, not for exceptional behaviour. There might be an argument for making Cancellation a top-level item below Throwable, because it's really special. But definitely not Error. (And if you do, the RFC should note a small policy amendment too.) I'm not particularly fond of the FutureLike name. Is there a reason why it isn't simply called "Future"? I know that in an earlier iteration there was a Future class. But Future is only the promise of a future value. It's the callee API. Callers can return specific implementations of Future, like "new Async\Completed(true)", "new Async\Completable" (which has a $future object as part of its API, which then can be awaited on), "new Async\Failed($someException)". A Coroutine should not only offer the current suspend location as API, but the full stacktrace too. (Like ReflectionFiber does.) Async\suspend() should maybe be called Async\yield() - as in yielding control back to the scheduler. Suspension is the observable side-effect of yielding or awaiting. But you don't actually suspend a coroutine, the action of suspending is done by the scheduler. [This also would match terminology used by the linux kernel for example, which calls it sched_yield(). I think it's misnamed on Fiber.] I don't feel strongly about that though. I find it confusing that an "await" operation does not accept Awaitable as its primary argument, but FutureLike per its signature. Why is that? The doc for Awaitable says that there can be await calls on those. But Async\await can't await it? What exactly is an Awaitable then? Would it essentially be the equivalent of an iterable Future (as in: can be awaited multiple times)? Minor nit: Coroutine::onFinally() could be just called Coroutine->finally(). Thank you for working on this, Bob