         let promise = Task<Int>.Promise()
         let task = promise.andThen(upon: customExecutor) { self.delaySuccessAsFuture($0 * 2) }
 
-        XCTAssertEqual(task.progress.completedUnitCount, 0)
-        XCTAssertEqual(task.progress.totalUnitCount, 2)
         XCTAssertEqual(task.progress.fractionCompleted, 0)
 
         promise.succeed(with: 9000)

            .andThen(upon: .any(), start: { self.delaySuccessAsTask("\($0)") })
            .map(upon: .any(), transform: { "\($0)\($0)" })

        XCTAssertEqual(task.progress.completedUnitCount, 0)
        XCTAssertEqual(task.progress.totalUnitCount, 103)
        XCTAssertEqual(task.progress.fractionCompleted, 0)

        customProgress.completedUnitCount = 5

        XCTAssertEqual(task.progress.completedUnitCount, 100)
        XCTAssertEqual(task.progress.totalUnitCount, 103)
        XCTAssertGreaterThanOrEqual(task.progress.fractionCompleted, 0.96)

        promise.succeed(with: 9000)

        wait(for: [
            expectation(toFinish: task.progress)
        ], timeout: shortTimeout)

        XCTAssertEqual(task.progress.completedUnitCount, 103)
        XCTAssertEqual(task.progress.totalUnitCount, 103)
        XCTAssertEqual(task.progress.fractionCompleted, 1)
    }

    func testThatChainingWithCustomProgressIsWeighted() {
        let promise1 = Task<Int>.Promise()
        let customQueue2 = DispatchQueue(label: "\(type(of: self)).\(#function)")
        customQueue2.suspend()

        let task = promise1
            .andThen(upon: .any(), start: { (value) -> Task<Int> in
                let promise2 = Task<Int>.Promise()
                let customProgress = Progress()
                customProgress.totalUnitCount = 87135

                customQueue2.async {
                    customProgress.completedUnitCount = 10012

                    customQueue2.async {
                        customProgress.completedUnitCount = 54442

                        customQueue2.async {
                            customProgress.completedUnitCount = 67412

                            customQueue2.async {
                                customProgress.completedUnitCount = 87135

                                promise2.succeed(with: value * 2)

        let promise = Task<Int>.Promise()
        let task = promise.andThen(upon: customExecutor) { _ throws -> Task<String> in throw TestError.first }

        XCTAssertEqual(task.progress.fractionCompleted, 0)

        promise.succeed(with: 9000)
