Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Explicitly retain timer source when scheduling tasks (#138)
Motivation: When a task is scheduled using a `DispatchTimerSource` on a `NIOTSEventLoop` the source is retain via a callback on the promise associated with the scheduled task. This stops the source from deinit'd before the task is run. However, the callback being added is an implementation details of `Scheduled` and the retain cycle is incidental. If that detail chnaged (such as in apple/swift-nio#2011) then tasks may not run and the promise could be leaked. Modifications: - Explicitly add a retain cycle between the future and the timer source which is broken by the promise being completed and callbacks run. Result: The timer source is kept alive until the event fires.
- Loading branch information