                 fulfill()
             }
             
-            _bind(nil, reject, configure, self)
+            _bindToUpstreamSignal(self, nil, reject, configure)
             
         }.name("\(self.name)-map")
     }

                fulfill()
            }
            
            _bind(nil, reject, configure, self)
            
        }.name("\(self.name)-mapAccumulate")
    }


public extension Signal
{
    /// creates your own customizable & method-chainable signal without writing `return Signal<U> { ... }`
    public func customize<U>(
        customizeClosure: (upstreamSignal: Signal<T>, progress: Signal<U>.ProgressHandler, fulfill: Signal<U>.FulfillHandler, reject: Signal<U>.RejectHandler) -> Void
    ) -> Signal<U>
    {
        return Signal<U> { progress, fulfill, reject, configure in
            customizeClosure(upstreamSignal: self, progress: progress, fulfill: fulfill, reject: reject)
            _bindToUpstreamSignal(self, nil, nil, configure)
        }
    }
    
    /// filter using newValue only
    public func filter(filterClosure: T -> Bool) -> Signal<T>
    {
