DOTweenとUniTaskのキャンセル処理について

DOTweenとDOTweenの間にキャンセル処理を挟むとき....

await transform.DOMoveY(5.0f, 0.3f).SetEase(Ease.OutBack)
    .ToUniTask(cancellationToken: cancel);
cancel.ThrowIfCancellationRequested();
await transform.DOMoveY(-5.0f, 0.3f).SetEase(Ease.OutBack)
    .ToUniTask(cancellationToken: cancel);

これだとコードが冗長になってしまう感じがする

キャンセル用の拡張メソッドをつくる

    public static class UniTaskExtensions
    {
        public static async UniTask ThrowIfCancelled(this UniTask task, CancellationToken cancel)
        {
            await task;
            cancel.ThrowIfCancellationRequested();
        }

        public static async UniTask ThrowIfCancelled(this Tween tween, CancellationToken cancel)
        {
            await tween.ToUniTask(cancellationToken: cancel).ThrowIfCancelled(cancel);

        }
    }

こうすれば簡潔に書けてよさそう

await transform.DOMoveY(5.0f, 0.3f).SetEase(Ease.OutBack).ThrowIfCancelled(cancel);
await transform.DOMoveY(-5.0f, 0.3f).SetEase(Ease.OutBack).ThrowIfCancelled(cancel);