def pass!(interops = {}, options = {}, &block)
      options[:unsafe] = @unsafe
      env = options.delete(:env) || {}
      backend.call(*contents(interops), env, options, &block)

    rescue Errno::ENOENT
      raise NoCommandError, @command
    end
def pass!(interops = {}, options = {}, &block)
      options[:unsafe] = @unsafe
      env = options.delete(:env) || {}
      backend.call(*contents(interops), env, options, &block)

    rescue Errno::ENOENT
      raise NoCommandError, @command
    end
Initialize the messenger.

 @param command [String] the name of the command file to run.
 @param arguments [String] the arguments to pass to the command.
   may contain interpolated values, like +{key}+ or +{{key}}+.
 @param options [Hash] the options for the messenger.
 Runs the command and arguments with the given interpolations;
 defaults to no interpolations.

 @note This method may not raise a {NoCommandError} and instead
   return a {Message} with the error code +127+, even if the
   command doesn't exist.
 @yield [Message] when the command finishes.
 @raise [NoCommandError] on no command.
 @param interops [Hash<Symbol, Object>] the interpolations to
   make.
 @param options [Hash<Symbol, Object>] the options for the
   backend.
 @return [Message, Object] message if no block was given, the
   return value of the block otherwise.