public static async Task <bool> TryWriteAsync <T>(this IWritableChannel <T> channel, T item, CancellationToken cancellationToken = default) { do { if (channel.TryWrite(item)) { return(true); } } while (await channel.WaitWriteAvailableAsync(cancellationToken).ConfigureAwait(false)); return(false); }