       App.log.verbose("WakayamaRbBoard#_wait(%o)", expect)
       return str2ab(expect) if typeof(expect) == "string"
       return expect
-    ).then((ab) =>
+    ).then((ab_len) =>
+      token = new Uint8Array(ab_len) if ab_len instanceof ArrayBuffer
+      length = ab_len if typeof(ab_len) == "number"
       return new Promise((resolve, reject) =>
-        @_waiter = {token: new Uint8Array(ab), resolve: resolve, reject: reject}
+        @_waiter = {token: token, length: length, resolve: resolve, reject: reject}
+        @_receiveHandler(null)
       )
     ) # return Promise.resolve().then()...
 

      Base directory
    ###
    constructor: (@_wrbb, @_dir = "") ->
      super(AsyncFs.BOARD_INTERNAL)
      return


        return str2ab(data, options.encoding)
      ).then((buffer) =>
        src = new Uint8Array(buffer)
        return @_wrbb._send("W #{@_dir}#{path} #{src.byteLength}\r") if @_binaryMode
        return @_wrbb._send("U #{@_dir}#{path} #{src.byteLength * 2}\r")
      ).then(=>
        return @_wrbb._wait("\r\nWaiting").timeout(CMD_TIMEOUT_MS)
      ).then(=>
        if @_binaryMode
          dump = data
        else
          dump = ""
          for i in [0...src.byteLength] by 1
            dump += BIN2HEX[src[i]]
        return @_wrbb._send(dump)
      ).then(=>
        return @_wrbb._wait("Saving").timeout(WRITE1K_TIMEOUT_MS * ((src.byteLength + 1024) / 1024))
      ).then(=>
        return @_wrbb._pull(
          @_wrbb._wait("\r\n>")
