     /// - parameter callback: The closure to invoke whenever the signal fires.
     #if swift(>=3.0)
     @discardableResult
-    public func listenPastOnce(on listener: AnyObject, callback: SignalCallback) -> SignalListener<T> {
+    public func listenPastOnce(on listener: AnyObject, callback: @escaping SignalCallback) -> SignalListener<T> {
         let signalListener = self.listen(on: listener, callback: callback)
         if let lastDataFired = lastDataFired {
             signalListener.callback(lastDataFired)


/// A SignalLister represenents an instance and its association with a Signal.
public class SignalListener<T> {
    #if swift(>=3.0)
    public typealias SignalCallback = @escaping (T) -> Void
    public typealias SignalFilter = @escaping (T) -> Bool
    #else
    public typealias SignalCallback = (T) -> Void
    public typealias SignalFilter = (T) -> Bool
    #endif
    
    // The listener
    weak public var listener: AnyObject?

    /// - parameter callback: The closure to invoke whenever the signal fires.
    #if swift(>=3.0)
    @discardableResult
    public func listenPast(on listener: AnyObject, callback: @escaping SignalCallback) -> SignalListener<T> {
        let signalListener = self.listen(on: listener, callback: callback)
        if let lastDataFired = lastDataFired {
            signalListener.callback(lastDataFired)
