         if when != nil { scheduleTime = nil }
 
         if !isScheduled {
-            schedule(at: when)
+            schedule(at: when, completionCallbackType: completionCallbackType)
         }
 
         playerNode.play()

    /// - Parameters:
    ///   - when: What time to schedule for. A value of nil means now or will
    ///   use a pre-existing scheduled time.
    public func play(at when: AVAudioTime? = nil) {
        guard !isPlaying || isPaused else { return }

        guard playerNode.engine != nil else {

        } else if let file = file {
            playerNode.scheduleFile(file,
                                    at: when,
                                    completionCallbackType: completionCallbackType) { _ in
                self.internalCompletionHandler()
            }
            scheduleTime = when ?? AVAudioTime.now()
