         # File lib/em/protocols/smtpserver.rb, line 282
    282:       def process_data
    283:         unless @state.include?(:rcpt)
    284:           send_data "503 Operation sequence error\r\n"
    285:         else
    286:           succeeded = proc {
    287:             send_data "354 Send it\r\n"
    288:             @state << :data
    289:             @databuffer = []
    290:           }
    291:           failed = proc {
    292:             send_data "550 Operation failed\r\n"
    293:           }
    294:
    295:           d = receive_data_command
    296:
    297:           if d.respond_to?(:callback)
    298:             d.callback(&succeeded)
    299:             d.errback(&failed)
    300:           else
    301:             (d ? succeeded : failed).call
    302:           end
    303:         end
    304:       end