diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs
index 780d4563469..2bc10f244ac 100644
--- a/components/script/dom/eventsource.rs
+++ b/components/script/dom/eventsource.rs
@@ -11,25 +11,39 @@ use dom::bindings::js::Root;
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
use dom::bindings::str::DOMString;
+use dom::event::Event;
use dom::eventtarget::EventTarget;
use dom::globalscope::GlobalScope;
+use dom::messageevent::MessageEvent;
+use encoding::Encoding;
+use encoding::all::UTF_8;
use hyper::header::{Accept, qitem};
use ipc_channel::ipc;
use ipc_channel::router::ROUTER;
+use js::conversions::ToJSValConvertible;
+use js::jsapi::JSAutoCompartment;
+use js::jsval::UndefinedValue;
use mime::{Mime, TopLevel, SubLevel};
use net_traits::{CoreResourceMsg, FetchMetadata, FetchResponseListener, NetworkError};
use net_traits::request::{CacheMode, CorsSettings, CredentialsMode};
use net_traits::request::{RequestInit, RequestMode};
use network_listener::{NetworkListener, PreInvoke};
use script_thread::Runnable;
+use servo_atoms::Atom;
use std::cell::Cell;
+use std::mem;
+use std::str::{Chars, FromStr};
use std::sync::{Arc, Mutex};
use std::sync::mpsc::{Sender, channel};
+use std::thread;
+use std::time::Duration;
use task_source::TaskSource;
use url::Url;
header! { (LastEventId, "Last-Event-ID") => [String] }
+const DEFAULT_RECONNECTION_TIME: u64 = 5000;
+
#[derive(JSTraceable, PartialEq, Copy, Clone, Debug, HeapSizeOf)]
struct GenerationId(u32);
@@ -44,18 +58,34 @@ enum ReadyState {
#[dom_struct]
pub struct EventSource {
eventtarget: EventTarget,
- url: DOMRefCell